Remove slash package (#7440)
This commit is contained in:
parent
8642912120
commit
2b75399520
13 changed files with 29 additions and 48 deletions
5
.changeset/early-students-taste.md
Normal file
5
.changeset/early-students-taste.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
'astro': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Remove `slash` package
|
5
.changeset/rich-pumpkins-change.md
Normal file
5
.changeset/rich-pumpkins-change.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
'@astrojs/internal-helpers': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Add `slash` path utility
|
|
@ -158,10 +158,8 @@
|
||||||
"semver": "^7.5.2",
|
"semver": "^7.5.2",
|
||||||
"server-destroy": "^1.0.1",
|
"server-destroy": "^1.0.1",
|
||||||
"shiki": "^0.14.1",
|
"shiki": "^0.14.1",
|
||||||
"slash": "^4.0.0",
|
|
||||||
"string-width": "^5.1.2",
|
"string-width": "^5.1.2",
|
||||||
"strip-ansi": "^7.1.0",
|
"strip-ansi": "^7.1.0",
|
||||||
"supports-esm": "^1.0.0",
|
|
||||||
"tsconfig-resolver": "^3.0.1",
|
"tsconfig-resolver": "^3.0.1",
|
||||||
"typescript": "*",
|
"typescript": "*",
|
||||||
"unist-util-visit": "^4.1.2",
|
"unist-util-visit": "^4.1.2",
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
import fs from 'node:fs';
|
import fs from 'node:fs';
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import { fileURLToPath, pathToFileURL } from 'node:url';
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
||||||
import slash from 'slash';
|
import { prependForwardSlash, slash } from '../../core/path.js';
|
||||||
import { prependForwardSlash } from '../../core/path.js';
|
|
||||||
import { imageMetadata, type Metadata } from './metadata.js';
|
import { imageMetadata, type Metadata } from './metadata.js';
|
||||||
|
|
||||||
export async function emitESMImage(
|
export async function emitESMImage(
|
||||||
|
@ -46,7 +45,6 @@ export async function emitESMImage(
|
||||||
}
|
}
|
||||||
|
|
||||||
function fileURLToNormalizedPath(filePath: URL): string {
|
function fileURLToNormalizedPath(filePath: URL): string {
|
||||||
// Uses `slash` package instead of Vite's `normalizePath`
|
// Uses `slash` instead of Vite's `normalizePath` to avoid CJS bundling issues.
|
||||||
// to avoid CJS bundling issues.
|
|
||||||
return slash(fileURLToPath(filePath) + filePath.search).replace(/\\/g, '/');
|
return slash(fileURLToPath(filePath) + filePath.search).replace(/\\/g, '/');
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
import slashify from 'slash';
|
|
||||||
import type { SSRElement } from '../../@types/astro';
|
import type { SSRElement } from '../../@types/astro';
|
||||||
import { joinPaths, prependForwardSlash } from '../../core/path.js';
|
import { joinPaths, prependForwardSlash, slash } from '../../core/path.js';
|
||||||
import type { StylesheetAsset } from '../app/types';
|
import type { StylesheetAsset } from '../app/types';
|
||||||
|
|
||||||
export function createAssetLink(href: string, base?: string, assetsPrefix?: string): string {
|
export function createAssetLink(href: string, base?: string, assetsPrefix?: string): string {
|
||||||
if (assetsPrefix) {
|
if (assetsPrefix) {
|
||||||
return joinPaths(assetsPrefix, slashify(href));
|
return joinPaths(assetsPrefix, slash(href));
|
||||||
} else if (base) {
|
} else if (base) {
|
||||||
return prependForwardSlash(joinPaths(base, slashify(href)));
|
return prependForwardSlash(joinPaths(base, slash(href)));
|
||||||
} else {
|
} else {
|
||||||
return href;
|
return href;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,12 +11,11 @@ import type { LogOptions } from '../../logger/core';
|
||||||
import nodeFs from 'fs';
|
import nodeFs from 'fs';
|
||||||
import { createRequire } from 'module';
|
import { createRequire } from 'module';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import slash from 'slash';
|
|
||||||
import { fileURLToPath } from 'url';
|
import { fileURLToPath } from 'url';
|
||||||
import { getPrerenderDefault } from '../../../prerender/utils.js';
|
import { getPrerenderDefault } from '../../../prerender/utils.js';
|
||||||
import { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from '../../constants.js';
|
import { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from '../../constants.js';
|
||||||
import { warn } from '../../logger/core.js';
|
import { warn } from '../../logger/core.js';
|
||||||
import { removeLeadingForwardSlash } from '../../path.js';
|
import { removeLeadingForwardSlash, slash } from '../../path.js';
|
||||||
import { resolvePages } from '../../util.js';
|
import { resolvePages } from '../../util.js';
|
||||||
import { getRouteGenerator } from './generator.js';
|
import { getRouteGenerator } from './generator.js';
|
||||||
const require = createRequire(import.meta.url);
|
const require = createRequire(import.meta.url);
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import slash from 'slash';
|
|
||||||
import { fileURLToPath } from 'url';
|
import { fileURLToPath } from 'url';
|
||||||
import { normalizePath } from 'vite';
|
import { normalizePath } from 'vite';
|
||||||
import type { AstroConfig, AstroSettings, RouteType } from '../@types/astro';
|
import type { AstroConfig, AstroSettings, RouteType } from '../@types/astro';
|
||||||
import { isServerLikeOutput } from '../prerender/utils.js';
|
import { isServerLikeOutput } from '../prerender/utils.js';
|
||||||
import { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from './constants.js';
|
import { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from './constants.js';
|
||||||
import type { ModuleLoader } from './module-loader';
|
import type { ModuleLoader } from './module-loader';
|
||||||
import { prependForwardSlash, removeTrailingForwardSlash } from './path.js';
|
import { prependForwardSlash, removeTrailingForwardSlash, slash } from './path.js';
|
||||||
|
|
||||||
/** Returns true if argument is an object of any prototype/class (but not null). */
|
/** Returns true if argument is an object of any prototype/class (but not null). */
|
||||||
export function isObject(value: unknown): value is Record<string, any> {
|
export function isObject(value: unknown): value is Record<string, any> {
|
||||||
|
@ -90,7 +89,7 @@ export function parseNpmName(
|
||||||
* Windows: C:/Users/astro/code/my-project/src/pages/index.astro
|
* Windows: C:/Users/astro/code/my-project/src/pages/index.astro
|
||||||
*/
|
*/
|
||||||
export function viteID(filePath: URL): string {
|
export function viteID(filePath: URL): string {
|
||||||
return slash(fileURLToPath(filePath) + filePath.search).replace(/\\/g, '/');
|
return slash(fileURLToPath(filePath) + filePath.search);
|
||||||
}
|
}
|
||||||
|
|
||||||
export const VALID_ID_PREFIX = `/@id/`;
|
export const VALID_ID_PREFIX = `/@id/`;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import nodeFs from 'fs';
|
import nodeFs from 'fs';
|
||||||
import npath from 'path';
|
import npath from 'path';
|
||||||
import slashify from 'slash';
|
|
||||||
import type * as vite from 'vite';
|
import type * as vite from 'vite';
|
||||||
|
import { slash } from '../core/path.js';
|
||||||
|
|
||||||
type NodeFileSystemModule = typeof nodeFs;
|
type NodeFileSystemModule = typeof nodeFs;
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ export default function loadFallbackPlugin({
|
||||||
async resolveId(id, parent) {
|
async resolveId(id, parent) {
|
||||||
// See if this can be loaded from our fs
|
// See if this can be loaded from our fs
|
||||||
if (parent) {
|
if (parent) {
|
||||||
const candidateId = npath.posix.join(npath.posix.dirname(slashify(parent)), id);
|
const candidateId = npath.posix.join(npath.posix.dirname(slash(parent)), id);
|
||||||
try {
|
try {
|
||||||
// Check to see if this file exists and is not a directory.
|
// Check to see if this file exists and is not a directory.
|
||||||
const stats = await fs.promises.stat(candidateId);
|
const stats = await fs.promises.stat(candidateId);
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import { fileURLToPath } from 'node:url';
|
import { fileURLToPath } from 'node:url';
|
||||||
import nodeFS from 'node:fs';
|
import nodeFS from 'node:fs';
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import slash from 'slash';
|
|
||||||
|
|
||||||
import { runInContainer } from '../../../dist/core/dev/index.js';
|
import { runInContainer } from '../../../dist/core/dev/index.js';
|
||||||
import { attachContentServerListeners } from '../../../dist/content/index.js';
|
import { attachContentServerListeners } from '../../../dist/content/index.js';
|
||||||
|
@ -11,7 +10,9 @@ const root = new URL('../../fixtures/alias/', import.meta.url);
|
||||||
|
|
||||||
function getTypesDts() {
|
function getTypesDts() {
|
||||||
const typesdtsURL = new URL('../../../content-types.template.d.ts', import.meta.url);
|
const typesdtsURL = new URL('../../../content-types.template.d.ts', import.meta.url);
|
||||||
const relpath = slash(path.relative(fileURLToPath(root), fileURLToPath(typesdtsURL)));
|
const relpath = path
|
||||||
|
.relative(fileURLToPath(root), fileURLToPath(typesdtsURL))
|
||||||
|
.replace(/\\/g, '/');
|
||||||
return {
|
return {
|
||||||
[relpath]: nodeFS.readFileSync(typesdtsURL, 'utf-8'),
|
[relpath]: nodeFS.readFileSync(typesdtsURL, 'utf-8'),
|
||||||
};
|
};
|
||||||
|
|
|
@ -52,7 +52,6 @@
|
||||||
"chai": "^4.3.7",
|
"chai": "^4.3.7",
|
||||||
"cheerio": "1.0.0-rc.12",
|
"cheerio": "1.0.0-rc.12",
|
||||||
"mocha": "^9.2.2",
|
"mocha": "^9.2.2",
|
||||||
"slash": "^4.0.0",
|
|
||||||
"wrangler": "^2.0.23"
|
"wrangler": "^2.0.23"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import { loadFixture } from './test-utils.js';
|
import { loadFixture } from './test-utils.js';
|
||||||
import { expect } from 'chai';
|
import { expect } from 'chai';
|
||||||
import slash from 'slash';
|
|
||||||
|
|
||||||
describe('Prerendering', () => {
|
describe('Prerendering', () => {
|
||||||
/** @type {import('./test-utils').Fixture} */
|
/** @type {import('./test-utils').Fixture} */
|
||||||
|
@ -21,7 +20,7 @@ describe('Prerendering', () => {
|
||||||
|
|
||||||
it('includes prerendered routes in the routes.json config', async () => {
|
it('includes prerendered routes in the routes.json config', async () => {
|
||||||
const foundRoutes = JSON.parse(await fixture.readFile('/_routes.json')).exclude.map((r) =>
|
const foundRoutes = JSON.parse(await fixture.readFile('/_routes.json')).exclude.map((r) =>
|
||||||
slash(r)
|
r.replace(/\\/g, '/')
|
||||||
);
|
);
|
||||||
const expectedExcludedRoutes = ['/_worker.js', '/one/index.html', '/one/'];
|
const expectedExcludedRoutes = ['/_worker.js', '/one/index.html', '/one/'];
|
||||||
|
|
||||||
|
@ -48,7 +47,7 @@ describe('Hybrid rendering', () => {
|
||||||
|
|
||||||
it('includes prerendered routes in the routes.json config', async () => {
|
it('includes prerendered routes in the routes.json config', async () => {
|
||||||
const foundRoutes = JSON.parse(await fixture.readFile('/_routes.json')).exclude.map((r) =>
|
const foundRoutes = JSON.parse(await fixture.readFile('/_routes.json')).exclude.map((r) =>
|
||||||
slash(r)
|
r.replace(/\\/g, '/')
|
||||||
);
|
);
|
||||||
const expectedExcludedRoutes = ['/_worker.js', '/index.html', '/'];
|
const expectedExcludedRoutes = ['/_worker.js', '/index.html', '/'];
|
||||||
|
|
||||||
|
|
|
@ -84,3 +84,7 @@ export function removeQueryString(path: string) {
|
||||||
export function isRemotePath(src: string) {
|
export function isRemotePath(src: string) {
|
||||||
return /^(http|ftp|https|ws):?\/\//.test(src) || src.startsWith('data:');
|
return /^(http|ftp|https|ws):?\/\//.test(src) || src.startsWith('data:');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function slash(path: string) {
|
||||||
|
return path.replace(/\\/g, '/');
|
||||||
|
}
|
||||||
|
|
25
pnpm-lock.yaml
generated
25
pnpm-lock.yaml
generated
|
@ -619,18 +619,12 @@ importers:
|
||||||
shiki:
|
shiki:
|
||||||
specifier: ^0.14.1
|
specifier: ^0.14.1
|
||||||
version: 0.14.1
|
version: 0.14.1
|
||||||
slash:
|
|
||||||
specifier: ^4.0.0
|
|
||||||
version: 4.0.0
|
|
||||||
string-width:
|
string-width:
|
||||||
specifier: ^5.1.2
|
specifier: ^5.1.2
|
||||||
version: 5.1.2
|
version: 5.1.2
|
||||||
strip-ansi:
|
strip-ansi:
|
||||||
specifier: ^7.1.0
|
specifier: ^7.1.0
|
||||||
version: 7.1.0
|
version: 7.1.0
|
||||||
supports-esm:
|
|
||||||
specifier: ^1.0.0
|
|
||||||
version: 1.0.0
|
|
||||||
tsconfig-resolver:
|
tsconfig-resolver:
|
||||||
specifier: ^3.0.1
|
specifier: ^3.0.1
|
||||||
version: 3.0.1
|
version: 3.0.1
|
||||||
|
@ -3638,9 +3632,6 @@ importers:
|
||||||
mocha:
|
mocha:
|
||||||
specifier: ^9.2.2
|
specifier: ^9.2.2
|
||||||
version: 9.2.2
|
version: 9.2.2
|
||||||
slash:
|
|
||||||
specifier: ^4.0.0
|
|
||||||
version: 4.0.0
|
|
||||||
wrangler:
|
wrangler:
|
||||||
specifier: ^2.0.23
|
specifier: ^2.0.23
|
||||||
version: 2.0.23
|
version: 2.0.23
|
||||||
|
@ -7719,10 +7710,6 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@lit-labs/ssr-dom-shim': 1.1.1
|
'@lit-labs/ssr-dom-shim': 1.1.1
|
||||||
|
|
||||||
/@ljharb/has-package-exports-patterns@0.0.2:
|
|
||||||
resolution: {integrity: sha512-4/RWEeXDO6bocPONheFe6gX/oQdP/bEpv0oL4HqjPP5DCenBSt0mHgahppY49N0CpsaqffdwPq+TlX9CYOq2Dw==}
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@manypkg/find-root@1.1.0:
|
/@manypkg/find-root@1.1.0:
|
||||||
resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
|
resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -12093,12 +12080,6 @@ packages:
|
||||||
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
|
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
/has-package-exports@1.3.0:
|
|
||||||
resolution: {integrity: sha512-e9OeXPQnmPhYoJ63lXC4wWe34TxEGZDZ3OQX9XRqp2VwsfLl3bQBy7VehLnd34g3ef8CmYlBLGqEMKXuz8YazQ==}
|
|
||||||
dependencies:
|
|
||||||
'@ljharb/has-package-exports-patterns': 0.0.2
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/has-property-descriptors@1.0.0:
|
/has-property-descriptors@1.0.0:
|
||||||
resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
|
resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -16461,12 +16442,6 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
has-flag: 4.0.0
|
has-flag: 4.0.0
|
||||||
|
|
||||||
/supports-esm@1.0.0:
|
|
||||||
resolution: {integrity: sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==}
|
|
||||||
dependencies:
|
|
||||||
has-package-exports: 1.3.0
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/supports-preserve-symlinks-flag@1.0.0:
|
/supports-preserve-symlinks-flag@1.0.0:
|
||||||
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
|
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
Loading…
Add table
Reference in a new issue