@remix-run/assets 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/scripts/compiler.d.ts.map +1 -1
- package/dist/lib/scripts/compiler.js +1 -9
- package/dist/lib/scripts/resolve.d.ts.map +1 -1
- package/dist/lib/scripts/resolve.js +14 -7
- package/dist/lib/scripts/specifiers.d.ts +2 -0
- package/dist/lib/scripts/specifiers.d.ts.map +1 -0
- package/dist/lib/scripts/specifiers.js +9 -0
- package/dist/lib/scripts/transform.d.ts.map +1 -1
- package/dist/lib/scripts/transform.js +2 -4
- package/package.json +7 -7
- package/src/lib/scripts/compiler.ts +1 -12
- package/src/lib/scripts/resolve.ts +23 -7
- package/src/lib/scripts/specifiers.ts +11 -0
- package/src/lib/scripts/transform.ts +2 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/lib/scripts/compiler.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAExD,OAAO,KAAK,EAKV,gBAAgB,EACjB,MAAM,oBAAoB,CAAA;AAI3B,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/lib/scripts/compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import { resolveModule, resolverExtensionAlias, resolverExtensions, supportedScr
|
|
|
12
12
|
import { createModuleStore } from "../module-store.js";
|
|
13
13
|
import { createTsconfigTransformOptionsResolver, transformModule } from "./transform.js";
|
|
14
14
|
import { ResolverFactory } from 'oxc-resolver';
|
|
15
|
+
import { isBareImportSpecifier } from "./specifiers.js";
|
|
15
16
|
const supportedScriptExtensionSet = new Set(supportedScriptExtensions);
|
|
16
17
|
const preloadConcurrency = Math.max(1, Math.min(8, os.availableParallelism() - 1));
|
|
17
18
|
export function createScriptCompiler(options) {
|
|
@@ -419,15 +420,6 @@ function resolveActualPath(identityPath) {
|
|
|
419
420
|
throw error;
|
|
420
421
|
}
|
|
421
422
|
}
|
|
422
|
-
function isBareImportSpecifier(specifier) {
|
|
423
|
-
return (!specifier.startsWith('./') &&
|
|
424
|
-
!specifier.startsWith('../') &&
|
|
425
|
-
!specifier.startsWith('/') &&
|
|
426
|
-
!specifier.startsWith('file:') &&
|
|
427
|
-
!specifier.startsWith('data:') &&
|
|
428
|
-
!specifier.startsWith('http://') &&
|
|
429
|
-
!specifier.startsWith('https://'));
|
|
430
|
-
}
|
|
431
423
|
function isNoEntityError(error) {
|
|
432
424
|
return (error instanceof Error &&
|
|
433
425
|
'code' in error &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/lib/scripts/resolve.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAMnD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAM1E,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/lib/scripts/resolve.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAMnD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAM1E,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAG9C,KAAK,YAAY,GAAG,YAAY,CAAC,iBAAiB,EAAE,cAAc,EAAE,aAAa,CAAC,CAAA;AAElF,eAAO,MAAM,sBAAsB;;;;CAIC,CAAA;AAEpC,eAAO,MAAM,kBAAkB,UAAiD,CAAA;AAChF,eAAO,MAAM,yBAAyB,UAAiD,CAAA;AAGvF,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAYD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,cAAc,CAAA;CACzB,GAAG,CACA;IACE,EAAE,EAAE,IAAI,CAAA;IACR,KAAK,EAAE,cAAc,CAAA;CACtB,GACD;IACE,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE,2BAA2B,CAAA;CACnC,CACJ,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAA;IACxC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;IACzC,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAA;IACnE,eAAe,EAAE,eAAe,CAAA;IAChC,MAAM,EAAE,cAAc,CAAA;CACvB,CAAA;AAkBD,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,iBAAiB,EAC9B,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,aAAa,CAAC,CA+IxB"}
|
|
@@ -3,6 +3,7 @@ import * as path from 'node:path';
|
|
|
3
3
|
import { createAssetServerCompilationError, isAssetServerCompilationError, } from "../compilation-error.js";
|
|
4
4
|
import { getInjectedPackageNameForSpecifier, getInjectedPackageImporterPath, restoreAuthoredInjectedPackageSpecifier, } from "../injected-packages.js";
|
|
5
5
|
import { normalizeFilePath } from "../paths.js";
|
|
6
|
+
import { isBareImportSpecifier } from "./specifiers.js";
|
|
6
7
|
export const resolverExtensionAlias = {
|
|
7
8
|
'.js': ['.js', '.ts', '.tsx', '.jsx'],
|
|
8
9
|
'.jsx': ['.jsx', '.tsx'],
|
|
@@ -18,7 +19,10 @@ export async function resolveModule(record, transformed, args) {
|
|
|
18
19
|
try {
|
|
19
20
|
resolvedImports =
|
|
20
21
|
transformed.unresolvedImports.length > 0
|
|
21
|
-
? await batchResolveSpecifiers(getUniqueSpecifiers(transformed.unresolvedImports),
|
|
22
|
+
? await batchResolveSpecifiers(getUniqueSpecifiers(transformed.unresolvedImports), {
|
|
23
|
+
identityPath: transformed.identityPath,
|
|
24
|
+
resolvedPath: transformed.resolvedPath,
|
|
25
|
+
}, args.resolverFactory)
|
|
22
26
|
: new Map();
|
|
23
27
|
}
|
|
24
28
|
catch (error) {
|
|
@@ -180,13 +184,13 @@ function getTrackedRelativeImportResolution(importerDir, specifier, isWatchIgnor
|
|
|
180
184
|
function resolveCandidateBasePath(importerDir, specifier) {
|
|
181
185
|
return normalizeFilePath(path.resolve(importerDir, specifier));
|
|
182
186
|
}
|
|
183
|
-
async function batchResolveSpecifiers(specifiers,
|
|
187
|
+
async function batchResolveSpecifiers(specifiers, importer, resolverFactory) {
|
|
184
188
|
let resolvedBySpecifier = new Map();
|
|
185
189
|
if (specifiers.length === 0)
|
|
186
190
|
return resolvedBySpecifier;
|
|
187
191
|
try {
|
|
188
192
|
for (let specifier of specifiers) {
|
|
189
|
-
let normalizedResolution = normalizeSpecifierResolution(specifier,
|
|
193
|
+
let normalizedResolution = normalizeSpecifierResolution(specifier, importer);
|
|
190
194
|
let resolutionResult = await resolverFactory.resolveFileAsync(normalizedResolution.importerPath, normalizedResolution.specifier);
|
|
191
195
|
if (resolutionResult.error) {
|
|
192
196
|
throw createAssetServerCompilationError(normalizedResolution.importerPath === getInjectedPackageImporterPath()
|
|
@@ -211,7 +215,7 @@ async function batchResolveSpecifiers(specifiers, importerPath, resolverFactory)
|
|
|
211
215
|
if (isAssetServerCompilationError(error) && error.code === 'IMPORT_RESOLUTION_FAILED') {
|
|
212
216
|
throw error;
|
|
213
217
|
}
|
|
214
|
-
throw createAssetServerCompilationError(`Failed to resolve imports in ${
|
|
218
|
+
throw createAssetServerCompilationError(`Failed to resolve imports in ${importer.identityPath}. ${formatUnknownError(error)}`, {
|
|
215
219
|
cause: error,
|
|
216
220
|
code: 'IMPORT_RESOLUTION_FAILED',
|
|
217
221
|
});
|
|
@@ -224,11 +228,11 @@ function getUniqueSpecifiers(unresolvedImports) {
|
|
|
224
228
|
function formatUnknownError(error) {
|
|
225
229
|
return error instanceof Error ? error.message : String(error);
|
|
226
230
|
}
|
|
227
|
-
function normalizeSpecifierResolution(specifier,
|
|
231
|
+
function normalizeSpecifierResolution(specifier, importer) {
|
|
228
232
|
let authoredInjectedPackageSpecifier = restoreAuthoredInjectedPackageSpecifier(specifier);
|
|
229
233
|
if (authoredInjectedPackageSpecifier) {
|
|
230
234
|
return {
|
|
231
|
-
importerPath,
|
|
235
|
+
importerPath: getSpecifierImporterPath(authoredInjectedPackageSpecifier, importer),
|
|
232
236
|
specifier: authoredInjectedPackageSpecifier,
|
|
233
237
|
};
|
|
234
238
|
}
|
|
@@ -239,10 +243,13 @@ function normalizeSpecifierResolution(specifier, importerPath) {
|
|
|
239
243
|
};
|
|
240
244
|
}
|
|
241
245
|
return {
|
|
242
|
-
importerPath,
|
|
246
|
+
importerPath: getSpecifierImporterPath(specifier, importer),
|
|
243
247
|
specifier,
|
|
244
248
|
};
|
|
245
249
|
}
|
|
250
|
+
function getSpecifierImporterPath(specifier, importer) {
|
|
251
|
+
return isBareImportSpecifier(specifier) ? importer.resolvedPath : importer.identityPath;
|
|
252
|
+
}
|
|
246
253
|
function getDisplayImportSpecifier(specifier) {
|
|
247
254
|
return restoreAuthoredInjectedPackageSpecifier(specifier) ?? specifier;
|
|
248
255
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specifiers.d.ts","sourceRoot":"","sources":["../../../src/lib/scripts/specifiers.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAUhE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function isBareImportSpecifier(specifier) {
|
|
2
|
+
return (!specifier.startsWith('./') &&
|
|
3
|
+
!specifier.startsWith('../') &&
|
|
4
|
+
!specifier.startsWith('/') &&
|
|
5
|
+
!specifier.startsWith('file:') &&
|
|
6
|
+
!specifier.startsWith('data:') &&
|
|
7
|
+
!specifier.startsWith('http://') &&
|
|
8
|
+
!specifier.startsWith('https://'));
|
|
9
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../src/lib/scripts/transform.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAS,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAS/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAO1E,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../src/lib/scripts/transform.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAS,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAS/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAO1E,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAGlD,KAAK,YAAY,GAAG,YAAY,CAAC,iBAAiB,EAAE,cAAc,EAAE,aAAa,CAAC,CAAA;AA4BlF,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,KAAK,gBAAgB,GAAG;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,iBAAiB,EAAE,gBAAgB,EAAE,CAAA;CACtC,CAAA;AAED,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,cAAc,CAAA;CACzB,GAAG,CACA;IACE,EAAE,EAAE,IAAI,CAAA;IACR,KAAK,EAAE,iBAAiB,CAAA;CACzB,GACD;IACE,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE,2BAA2B,CAAA;CACnC,CACJ,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,CAAC,EAAE,oBAAoB,CAAA;CACnC,CAAA;AAED,KAAK,gCAAgC,GAAG,UAAU,CAAC,OAAO,sCAAsC,CAAC,CAAA;AAEjG,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IACrC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAChC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;IACzC,MAAM,EAAE,OAAO,CAAA;IACf,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACtD,MAAM,EAAE,cAAc,CAAA;IACtB,oBAAoB,EAAE,UAAU,GAAG,KAAK,CAAA;IACxC,UAAU,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAA;IACxC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACnC,gCAAgC,EAAE,gCAAgC,CAAA;CACnE,CAAA;AAED,wBAAgB,sCAAsC;;;EAkCrD;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,eAAe,CAAC,CA6H1B"}
|
|
@@ -13,6 +13,7 @@ import { generateFingerprint } from "../fingerprint.js";
|
|
|
13
13
|
import { maskAuthoredInjectedPackageSpecifier, mayContainInjectedPackageSpecifier, restoreAuthoredInjectedPackageSpecifier, } from "../injected-packages.js";
|
|
14
14
|
import { normalizeFilePath } from "../paths.js";
|
|
15
15
|
import { composeSourceMaps, rewriteSourceMapSources, stringifySourceMap } from "../source-maps.js";
|
|
16
|
+
import { isBareImportSpecifier } from "./specifiers.js";
|
|
16
17
|
const scriptModuleTypes = [
|
|
17
18
|
{ extension: '.js', lang: 'js' },
|
|
18
19
|
{ extension: '.jsx', lang: 'jsx' },
|
|
@@ -143,7 +144,7 @@ export async function transformModule(record, args) {
|
|
|
143
144
|
identityPath: record.identityPath,
|
|
144
145
|
importerDir: path.dirname(record.identityPath),
|
|
145
146
|
packageSpecifiers: analysis.unresolvedImports
|
|
146
|
-
.filter((unresolved) =>
|
|
147
|
+
.filter((unresolved) => isBareImportSpecifier(unresolved.specifier))
|
|
147
148
|
.map((unresolved) => unresolved.specifier),
|
|
148
149
|
rawCode: analysis.rawCode,
|
|
149
150
|
resolvedPath,
|
|
@@ -177,9 +178,6 @@ function findNearestTsconfigPath(directory) {
|
|
|
177
178
|
currentDirectory = parentDirectory;
|
|
178
179
|
}
|
|
179
180
|
}
|
|
180
|
-
function isPackageImportSpecifier(specifier) {
|
|
181
|
-
return !specifier.startsWith('./') && !specifier.startsWith('../') && !specifier.startsWith('/');
|
|
182
|
-
}
|
|
183
181
|
async function analyzeModuleSource(sourceText, resolvedPath, transformOptions, options) {
|
|
184
182
|
let maskedSourceText = maskAuthoredInjectedPackageImports(sourceText, resolvedPath);
|
|
185
183
|
let transformResult;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remix-run/assets",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Fetch-based server for compiling browser JS/TS and CSS assets on demand",
|
|
5
5
|
"author": "Michael Jackson <mjijackson@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,17 +38,17 @@
|
|
|
38
38
|
"oxc-transform": "^0.121.0",
|
|
39
39
|
"picomatch": "^4.0.4",
|
|
40
40
|
"source-map-js": "^1.2.1",
|
|
41
|
-
"@remix-run/file-storage": "0.13.
|
|
42
|
-
"@remix-run/headers": "0.
|
|
43
|
-
"@remix-run/
|
|
44
|
-
"@remix-run/
|
|
41
|
+
"@remix-run/file-storage": "0.13.5",
|
|
42
|
+
"@remix-run/headers": "0.21.0",
|
|
43
|
+
"@remix-run/route-pattern": "0.21.1",
|
|
44
|
+
"@remix-run/mime": "0.4.1"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/node": "^24.6.0",
|
|
48
48
|
"@types/picomatch": "^4.0.3",
|
|
49
49
|
"@typescript/native-preview": "7.0.0-dev.20251125.1",
|
|
50
|
-
"@remix-run/assert": "0.2.
|
|
51
|
-
"@remix-run/test": "0.4.
|
|
50
|
+
"@remix-run/assert": "0.2.1",
|
|
51
|
+
"@remix-run/test": "0.4.1"
|
|
52
52
|
},
|
|
53
53
|
"keywords": [
|
|
54
54
|
"remix",
|
|
@@ -34,6 +34,7 @@ import { createTsconfigTransformOptionsResolver, transformModule } from './trans
|
|
|
34
34
|
import type { ResolveModuleResult, TransformArgs, TransformedModule } from './transform.ts'
|
|
35
35
|
import { ResolverFactory } from 'oxc-resolver'
|
|
36
36
|
import type { EmittedAsset, EmittedModule } from './emit.ts'
|
|
37
|
+
import { isBareImportSpecifier } from './specifiers.ts'
|
|
37
38
|
|
|
38
39
|
type ScriptRecord = ModuleRecord<TransformedModule, ResolvedModule, EmittedModule>
|
|
39
40
|
type ScriptStore = ModuleStore<TransformedModule, ResolvedModule, EmittedModule>
|
|
@@ -615,18 +616,6 @@ function resolveActualPath(identityPath: string): string | null {
|
|
|
615
616
|
}
|
|
616
617
|
}
|
|
617
618
|
|
|
618
|
-
function isBareImportSpecifier(specifier: string): boolean {
|
|
619
|
-
return (
|
|
620
|
-
!specifier.startsWith('./') &&
|
|
621
|
-
!specifier.startsWith('../') &&
|
|
622
|
-
!specifier.startsWith('/') &&
|
|
623
|
-
!specifier.startsWith('file:') &&
|
|
624
|
-
!specifier.startsWith('data:') &&
|
|
625
|
-
!specifier.startsWith('http://') &&
|
|
626
|
-
!specifier.startsWith('https://')
|
|
627
|
-
)
|
|
628
|
-
}
|
|
629
|
-
|
|
630
619
|
function isNoEntityError(
|
|
631
620
|
error: unknown,
|
|
632
621
|
): error is NodeJS.ErrnoException & { code: 'ENOENT' | 'ENOTDIR' } {
|
|
@@ -17,6 +17,7 @@ import { normalizeFilePath } from '../paths.ts'
|
|
|
17
17
|
import type { CompiledRoutes } from '../routes.ts'
|
|
18
18
|
import type { ResolveModuleResult, TransformedModule } from './transform.ts'
|
|
19
19
|
import type { EmittedModule } from './emit.ts'
|
|
20
|
+
import { isBareImportSpecifier } from './specifiers.ts'
|
|
20
21
|
|
|
21
22
|
type ScriptRecord = ModuleRecord<TransformedModule, ResolvedModule, EmittedModule>
|
|
22
23
|
|
|
@@ -91,6 +92,11 @@ type NormalizedSpecifierResolution = {
|
|
|
91
92
|
specifier: string
|
|
92
93
|
}
|
|
93
94
|
|
|
95
|
+
type SpecifierResolutionImporter = {
|
|
96
|
+
identityPath: string
|
|
97
|
+
resolvedPath: string
|
|
98
|
+
}
|
|
99
|
+
|
|
94
100
|
export async function resolveModule(
|
|
95
101
|
record: ScriptRecord,
|
|
96
102
|
transformed: TransformedModule,
|
|
@@ -105,7 +111,10 @@ export async function resolveModule(
|
|
|
105
111
|
transformed.unresolvedImports.length > 0
|
|
106
112
|
? await batchResolveSpecifiers(
|
|
107
113
|
getUniqueSpecifiers(transformed.unresolvedImports),
|
|
108
|
-
|
|
114
|
+
{
|
|
115
|
+
identityPath: transformed.identityPath,
|
|
116
|
+
resolvedPath: transformed.resolvedPath,
|
|
117
|
+
},
|
|
109
118
|
args.resolverFactory,
|
|
110
119
|
)
|
|
111
120
|
: new Map<string, ResolvedSpec>()
|
|
@@ -358,7 +367,7 @@ function resolveCandidateBasePath(importerDir: string, specifier: string): strin
|
|
|
358
367
|
|
|
359
368
|
async function batchResolveSpecifiers(
|
|
360
369
|
specifiers: string[],
|
|
361
|
-
|
|
370
|
+
importer: SpecifierResolutionImporter,
|
|
362
371
|
resolverFactory: ResolveArgs['resolverFactory'],
|
|
363
372
|
): Promise<Map<string, ResolvedSpec>> {
|
|
364
373
|
let resolvedBySpecifier = new Map<string, ResolvedSpec>()
|
|
@@ -366,7 +375,7 @@ async function batchResolveSpecifiers(
|
|
|
366
375
|
|
|
367
376
|
try {
|
|
368
377
|
for (let specifier of specifiers) {
|
|
369
|
-
let normalizedResolution = normalizeSpecifierResolution(specifier,
|
|
378
|
+
let normalizedResolution = normalizeSpecifierResolution(specifier, importer)
|
|
370
379
|
let resolutionResult = await resolverFactory.resolveFileAsync(
|
|
371
380
|
normalizedResolution.importerPath,
|
|
372
381
|
normalizedResolution.specifier,
|
|
@@ -400,7 +409,7 @@ async function batchResolveSpecifiers(
|
|
|
400
409
|
}
|
|
401
410
|
|
|
402
411
|
throw createAssetServerCompilationError(
|
|
403
|
-
`Failed to resolve imports in ${
|
|
412
|
+
`Failed to resolve imports in ${importer.identityPath}. ${formatUnknownError(error)}`,
|
|
404
413
|
{
|
|
405
414
|
cause: error,
|
|
406
415
|
code: 'IMPORT_RESOLUTION_FAILED',
|
|
@@ -421,12 +430,12 @@ function formatUnknownError(error: unknown): string {
|
|
|
421
430
|
|
|
422
431
|
function normalizeSpecifierResolution(
|
|
423
432
|
specifier: string,
|
|
424
|
-
|
|
433
|
+
importer: SpecifierResolutionImporter,
|
|
425
434
|
): NormalizedSpecifierResolution {
|
|
426
435
|
let authoredInjectedPackageSpecifier = restoreAuthoredInjectedPackageSpecifier(specifier)
|
|
427
436
|
if (authoredInjectedPackageSpecifier) {
|
|
428
437
|
return {
|
|
429
|
-
importerPath,
|
|
438
|
+
importerPath: getSpecifierImporterPath(authoredInjectedPackageSpecifier, importer),
|
|
430
439
|
specifier: authoredInjectedPackageSpecifier,
|
|
431
440
|
}
|
|
432
441
|
}
|
|
@@ -439,11 +448,18 @@ function normalizeSpecifierResolution(
|
|
|
439
448
|
}
|
|
440
449
|
|
|
441
450
|
return {
|
|
442
|
-
importerPath,
|
|
451
|
+
importerPath: getSpecifierImporterPath(specifier, importer),
|
|
443
452
|
specifier,
|
|
444
453
|
}
|
|
445
454
|
}
|
|
446
455
|
|
|
456
|
+
function getSpecifierImporterPath(
|
|
457
|
+
specifier: string,
|
|
458
|
+
importer: SpecifierResolutionImporter,
|
|
459
|
+
): string {
|
|
460
|
+
return isBareImportSpecifier(specifier) ? importer.resolvedPath : importer.identityPath
|
|
461
|
+
}
|
|
462
|
+
|
|
447
463
|
function getDisplayImportSpecifier(specifier: string): string {
|
|
448
464
|
return restoreAuthoredInjectedPackageSpecifier(specifier) ?? specifier
|
|
449
465
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function isBareImportSpecifier(specifier: string): boolean {
|
|
2
|
+
return (
|
|
3
|
+
!specifier.startsWith('./') &&
|
|
4
|
+
!specifier.startsWith('../') &&
|
|
5
|
+
!specifier.startsWith('/') &&
|
|
6
|
+
!specifier.startsWith('file:') &&
|
|
7
|
+
!specifier.startsWith('data:') &&
|
|
8
|
+
!specifier.startsWith('http://') &&
|
|
9
|
+
!specifier.startsWith('https://')
|
|
10
|
+
)
|
|
11
|
+
}
|
|
@@ -30,6 +30,7 @@ import { composeSourceMaps, rewriteSourceMapSources, stringifySourceMap } from '
|
|
|
30
30
|
import type { EmittedModule } from './emit.ts'
|
|
31
31
|
import type { ResolvedScriptTarget } from '../target.ts'
|
|
32
32
|
import type { ResolvedModule } from './resolve.ts'
|
|
33
|
+
import { isBareImportSpecifier } from './specifiers.ts'
|
|
33
34
|
|
|
34
35
|
type ScriptRecord = ModuleRecord<TransformedModule, ResolvedModule, EmittedModule>
|
|
35
36
|
|
|
@@ -263,7 +264,7 @@ export async function transformModule(
|
|
|
263
264
|
identityPath: record.identityPath,
|
|
264
265
|
importerDir: path.dirname(record.identityPath),
|
|
265
266
|
packageSpecifiers: analysis.unresolvedImports
|
|
266
|
-
.filter((unresolved) =>
|
|
267
|
+
.filter((unresolved) => isBareImportSpecifier(unresolved.specifier))
|
|
267
268
|
.map((unresolved) => unresolved.specifier),
|
|
268
269
|
rawCode: analysis.rawCode,
|
|
269
270
|
resolvedPath,
|
|
@@ -299,10 +300,6 @@ function findNearestTsconfigPath(directory: string): string | null {
|
|
|
299
300
|
}
|
|
300
301
|
}
|
|
301
302
|
|
|
302
|
-
function isPackageImportSpecifier(specifier: string): boolean {
|
|
303
|
-
return !specifier.startsWith('./') && !specifier.startsWith('../') && !specifier.startsWith('/')
|
|
304
|
-
}
|
|
305
|
-
|
|
306
303
|
async function analyzeModuleSource(
|
|
307
304
|
sourceText: string,
|
|
308
305
|
resolvedPath: string,
|