@remix-run/assets 0.1.0 → 0.3.0
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/README.md +88 -67
- package/dist/lib/access.d.ts.map +1 -1
- package/dist/lib/access.js +3 -0
- package/dist/lib/asset-server.d.ts +50 -45
- package/dist/lib/asset-server.d.ts.map +1 -1
- package/dist/lib/asset-server.js +159 -50
- package/dist/lib/compilation-error.d.ts +2 -2
- package/dist/lib/compilation-error.d.ts.map +1 -1
- package/dist/lib/compilation-error.js +1 -1
- package/dist/lib/file-matcher.d.ts.map +1 -1
- package/dist/lib/file-matcher.js +3 -2
- package/dist/lib/injected-packages.d.ts +11 -0
- package/dist/lib/injected-packages.d.ts.map +1 -0
- package/dist/lib/injected-packages.js +86 -0
- package/dist/lib/module-store.d.ts +41 -0
- package/dist/lib/module-store.d.ts.map +1 -0
- package/dist/lib/{scripts/store.js → module-store.js} +43 -41
- package/dist/lib/paths.d.ts +1 -0
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +12 -0
- package/dist/lib/routes.d.ts +5 -7
- package/dist/lib/routes.d.ts.map +1 -1
- package/dist/lib/routes.js +13 -16
- package/dist/lib/scripts/compiler.d.ts +15 -15
- package/dist/lib/scripts/compiler.d.ts.map +1 -1
- package/dist/lib/scripts/compiler.js +50 -46
- package/dist/lib/scripts/emit.js +2 -2
- package/dist/lib/scripts/resolve.d.ts +7 -17
- package/dist/lib/scripts/resolve.d.ts.map +1 -1
- package/dist/lib/scripts/resolve.js +47 -14
- package/dist/lib/scripts/transform.d.ts +11 -9
- package/dist/lib/scripts/transform.d.ts.map +1 -1
- package/dist/lib/scripts/transform.js +110 -23
- package/dist/lib/source-maps.d.ts +1 -1
- package/dist/lib/source-maps.d.ts.map +1 -1
- package/dist/lib/source-maps.js +7 -1
- package/dist/lib/styles/compiler.d.ts +52 -0
- package/dist/lib/styles/compiler.d.ts.map +1 -0
- package/dist/lib/styles/compiler.js +272 -0
- package/dist/lib/styles/emit.d.ts +25 -0
- package/dist/lib/styles/emit.d.ts.map +1 -0
- package/dist/lib/styles/emit.js +78 -0
- package/dist/lib/styles/resolve.d.ts +48 -0
- package/dist/lib/styles/resolve.d.ts.map +1 -0
- package/dist/lib/styles/resolve.js +188 -0
- package/dist/lib/styles/transform.d.ts +47 -0
- package/dist/lib/styles/transform.d.ts.map +1 -0
- package/dist/lib/styles/transform.js +131 -0
- package/dist/lib/target.d.ts +21 -0
- package/dist/lib/target.d.ts.map +1 -0
- package/dist/lib/target.js +127 -0
- package/package.json +13 -4
- package/src/lib/access.ts +2 -0
- package/src/lib/asset-server.ts +239 -99
- package/src/lib/compilation-error.ts +7 -7
- package/src/lib/file-matcher.ts +3 -2
- package/src/lib/injected-packages.ts +117 -0
- package/src/lib/{scripts/store.ts → module-store.ts} +100 -87
- package/src/lib/paths.ts +28 -0
- package/src/lib/routes.ts +31 -22
- package/src/lib/scripts/compiler.ts +88 -70
- package/src/lib/scripts/emit.ts +2 -2
- package/src/lib/scripts/resolve.ts +85 -28
- package/src/lib/scripts/transform.ts +153 -36
- package/src/lib/source-maps.ts +8 -1
- package/src/lib/styles/compiler.ts +400 -0
- package/src/lib/styles/emit.ts +137 -0
- package/src/lib/styles/resolve.ts +316 -0
- package/src/lib/styles/transform.ts +226 -0
- package/src/lib/target.ts +196 -0
- package/dist/lib/scripts/store.d.ts +0 -40
- package/dist/lib/scripts/store.d.ts.map +0 -1
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { ResolverFactory } from 'oxc-resolver';
|
|
2
2
|
import type { AssetServerCompilationError } from '../compilation-error.ts';
|
|
3
|
+
import type { ModuleRecord, ModuleTracking } from '../module-store.ts';
|
|
3
4
|
import type { CompiledRoutes } from '../routes.ts';
|
|
4
|
-
import type { ModuleRecord } from './store.ts';
|
|
5
5
|
import type { ResolveModuleResult, TransformedModule } from './transform.ts';
|
|
6
|
+
import type { EmittedModule } from './emit.ts';
|
|
7
|
+
type ScriptRecord = ModuleRecord<TransformedModule, ResolvedModule, EmittedModule>;
|
|
6
8
|
export declare const resolverExtensionAlias: {
|
|
7
9
|
'.js': string[];
|
|
8
10
|
'.jsx': string[];
|
|
@@ -16,38 +18,26 @@ type ResolvedImport = {
|
|
|
16
18
|
quote?: '"' | "'" | '`';
|
|
17
19
|
start: number;
|
|
18
20
|
};
|
|
19
|
-
type RelativeImportResolution = {
|
|
20
|
-
candidatePaths: readonly string[];
|
|
21
|
-
candidatePrefixes: readonly string[];
|
|
22
|
-
specifier: string;
|
|
23
|
-
};
|
|
24
|
-
export type TrackedResolution = RelativeImportResolution & {
|
|
25
|
-
resolvedIdentityPath: string | null;
|
|
26
|
-
};
|
|
27
21
|
export type ResolvedModule = {
|
|
28
22
|
deps: string[];
|
|
29
23
|
fingerprint: string | null;
|
|
30
24
|
identityPath: string;
|
|
31
25
|
imports: ResolvedImport[];
|
|
32
26
|
trackedFiles: string[];
|
|
33
|
-
trackedResolutions: TrackedResolution[];
|
|
34
27
|
rawCode: string;
|
|
35
28
|
resolvedPath: string;
|
|
36
29
|
sourceMap: string | null;
|
|
37
30
|
stableUrlPathname: string;
|
|
38
31
|
};
|
|
39
|
-
export type ResolutionFailureState = {
|
|
40
|
-
trackedFiles: readonly string[];
|
|
41
|
-
trackedResolutions: readonly TrackedResolution[];
|
|
42
|
-
};
|
|
43
32
|
type ResolveResult = {
|
|
33
|
+
tracking: ModuleTracking;
|
|
34
|
+
} & ({
|
|
44
35
|
ok: true;
|
|
45
36
|
value: ResolvedModule;
|
|
46
37
|
} | {
|
|
47
38
|
ok: false;
|
|
48
39
|
error: AssetServerCompilationError;
|
|
49
|
-
|
|
50
|
-
};
|
|
40
|
+
});
|
|
51
41
|
export type ResolveArgs = {
|
|
52
42
|
isAllowed(absolutePath: string): boolean;
|
|
53
43
|
isWatchIgnored(filePath: string): boolean;
|
|
@@ -55,6 +45,6 @@ export type ResolveArgs = {
|
|
|
55
45
|
resolverFactory: ResolverFactory;
|
|
56
46
|
routes: CompiledRoutes;
|
|
57
47
|
};
|
|
58
|
-
export declare function resolveModule(record:
|
|
48
|
+
export declare function resolveModule(record: ScriptRecord, transformed: TransformedModule, args: ResolveArgs): Promise<ResolveResult>;
|
|
59
49
|
export {};
|
|
60
50
|
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -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;
|
|
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;AAE9C,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;AAaD,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,iBAAiB,EAC9B,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,aAAa,CAAC,CA0IxB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
3
|
import { createAssetServerCompilationError, isAssetServerCompilationError, } from "../compilation-error.js";
|
|
4
|
+
import { getInjectedPackageNameForSpecifier, getInjectedPackageImporterPath, restoreAuthoredInjectedPackageSpecifier, } from "../injected-packages.js";
|
|
4
5
|
import { normalizeFilePath } from "../paths.js";
|
|
5
6
|
export const resolverExtensionAlias = {
|
|
6
7
|
'.js': ['.js', '.ts', '.tsx', '.jsx'],
|
|
@@ -28,30 +29,31 @@ export async function resolveModule(record, transformed, args) {
|
|
|
28
29
|
let importsWithPaths = [];
|
|
29
30
|
let deps = new Set();
|
|
30
31
|
for (let unresolved of transformed.unresolvedImports) {
|
|
31
|
-
let
|
|
32
|
+
let displaySpecifier = getDisplayImportSpecifier(unresolved.specifier);
|
|
33
|
+
let trackedResolution = getTrackedRelativeImportResolution(transformed.importerDir, displaySpecifier, args.isWatchIgnored);
|
|
32
34
|
let resolvedSpec = resolvedImports.get(unresolved.specifier);
|
|
33
35
|
if (!resolvedSpec?.absolutePath) {
|
|
34
|
-
return failResolve(createAssetServerCompilationError(`Failed to resolve import "${
|
|
36
|
+
return failResolve(createAssetServerCompilationError(`Failed to resolve import "${displaySpecifier}" in ${transformed.resolvedPath}. ` +
|
|
35
37
|
`Ensure it resolves to a file within the configured asset server fileMap, or mark it as external.`, {
|
|
36
38
|
code: 'IMPORT_RESOLUTION_FAILED',
|
|
37
39
|
}), trackedFiles, trackedResolutions, transformed.resolvedPath, { isWatchIgnored: args.isWatchIgnored, trackedResolution });
|
|
38
40
|
}
|
|
39
41
|
let resolvedImport = args.resolveModulePath(resolvedSpec.absolutePath);
|
|
40
42
|
if (!resolvedImport) {
|
|
41
|
-
return failResolve(createAssetServerCompilationError(`
|
|
43
|
+
return failResolve(createAssetServerCompilationError(`Import "${displaySpecifier}" in ${transformed.resolvedPath}, resolved to "${resolvedSpec.absolutePath}", is not a supported script file. ` +
|
|
42
44
|
`Supported extensions are ${supportedScriptExtensions.join(', ')}.`, {
|
|
43
45
|
code: 'IMPORT_NOT_SUPPORTED',
|
|
44
46
|
}), trackedFiles, trackedResolutions, transformed.resolvedPath, { isWatchIgnored: args.isWatchIgnored, trackedResolution });
|
|
45
47
|
}
|
|
46
48
|
if (!args.isAllowed(resolvedImport.identityPath)) {
|
|
47
|
-
return failResolve(createAssetServerCompilationError(`
|
|
48
|
-
`Add a matching allow rule, remove a conflicting deny rule, or mark this import as external.`, {
|
|
49
|
+
return failResolve(createAssetServerCompilationError(`Import "${displaySpecifier}" in ${transformed.resolvedPath}, resolved to "${resolvedImport.identityPath}", is not allowed by the asset server allow/deny configuration. ` +
|
|
50
|
+
`Add a matching allow rule for this file path, remove a conflicting deny rule for this file path, or mark this import as external.`, {
|
|
49
51
|
code: 'IMPORT_NOT_ALLOWED',
|
|
50
52
|
}), trackedFiles, trackedResolutions, transformed.resolvedPath, { isWatchIgnored: args.isWatchIgnored, trackedResolution });
|
|
51
53
|
}
|
|
52
54
|
let stableUrlPathname = args.routes.toUrlPathname(resolvedImport.identityPath);
|
|
53
55
|
if (!stableUrlPathname) {
|
|
54
|
-
return failResolve(createAssetServerCompilationError(`
|
|
56
|
+
return failResolve(createAssetServerCompilationError(`Import "${displaySpecifier}" in ${transformed.resolvedPath}, resolved to "${resolvedImport.identityPath}", is outside all configured fileMap entries. ` +
|
|
55
57
|
`Add a matching fileMap entry for this file path, or mark this import as external.`, {
|
|
56
58
|
code: 'IMPORT_OUTSIDE_FILE_MAP',
|
|
57
59
|
}), trackedFiles, trackedResolutions, transformed.resolvedPath, { isWatchIgnored: args.isWatchIgnored, trackedResolution });
|
|
@@ -78,13 +80,13 @@ export async function resolveModule(record, transformed, args) {
|
|
|
78
80
|
}
|
|
79
81
|
return {
|
|
80
82
|
ok: true,
|
|
83
|
+
tracking: toResolveTracking(trackedFiles, trackedResolutions),
|
|
81
84
|
value: {
|
|
82
85
|
deps: [...deps],
|
|
83
86
|
fingerprint: transformed.fingerprint,
|
|
84
87
|
identityPath: record.identityPath,
|
|
85
88
|
imports: importsWithPaths,
|
|
86
89
|
trackedFiles: [...trackedFiles],
|
|
87
|
-
trackedResolutions,
|
|
88
90
|
rawCode: transformed.rawCode,
|
|
89
91
|
resolvedPath: transformed.resolvedPath,
|
|
90
92
|
sourceMap: transformed.sourceMap,
|
|
@@ -164,10 +166,13 @@ async function batchResolveSpecifiers(specifiers, importerPath, resolverFactory)
|
|
|
164
166
|
return resolvedBySpecifier;
|
|
165
167
|
try {
|
|
166
168
|
for (let specifier of specifiers) {
|
|
167
|
-
let
|
|
169
|
+
let normalizedResolution = normalizeSpecifierResolution(specifier, importerPath);
|
|
170
|
+
let resolutionResult = await resolverFactory.resolveFileAsync(normalizedResolution.importerPath, normalizedResolution.specifier);
|
|
168
171
|
if (resolutionResult.error) {
|
|
169
|
-
throw createAssetServerCompilationError(
|
|
170
|
-
`
|
|
172
|
+
throw createAssetServerCompilationError(normalizedResolution.importerPath === getInjectedPackageImporterPath()
|
|
173
|
+
? `Failed to resolve injected import "${specifier}" from asset server.`
|
|
174
|
+
: `Failed to resolve import "${normalizedResolution.specifier}" in ${normalizedResolution.importerPath}. ` +
|
|
175
|
+
`Ensure it resolves to a file within the configured asset server fileMap, or mark it as external.`, {
|
|
171
176
|
code: 'IMPORT_RESOLUTION_FAILED',
|
|
172
177
|
});
|
|
173
178
|
}
|
|
@@ -199,14 +204,42 @@ function getUniqueSpecifiers(unresolvedImports) {
|
|
|
199
204
|
function formatUnknownError(error) {
|
|
200
205
|
return error instanceof Error ? error.message : String(error);
|
|
201
206
|
}
|
|
207
|
+
function normalizeSpecifierResolution(specifier, importerPath) {
|
|
208
|
+
let authoredInjectedPackageSpecifier = restoreAuthoredInjectedPackageSpecifier(specifier);
|
|
209
|
+
if (authoredInjectedPackageSpecifier) {
|
|
210
|
+
return {
|
|
211
|
+
importerPath,
|
|
212
|
+
specifier: authoredInjectedPackageSpecifier,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
if (getInjectedPackageNameForSpecifier(specifier)) {
|
|
216
|
+
return {
|
|
217
|
+
importerPath: getInjectedPackageImporterPath(),
|
|
218
|
+
specifier,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
importerPath,
|
|
223
|
+
specifier,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
function getDisplayImportSpecifier(specifier) {
|
|
227
|
+
return restoreAuthoredInjectedPackageSpecifier(specifier) ?? specifier;
|
|
228
|
+
}
|
|
202
229
|
function failResolve(error, trackedFiles, trackedResolutions, importerPath, options = {}) {
|
|
203
230
|
return {
|
|
204
231
|
ok: false,
|
|
205
232
|
error: toResolveError(error, importerPath),
|
|
206
|
-
tracking:
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
233
|
+
tracking: toResolveTracking(trackedFiles, appendFailedTrackedResolution(trackedResolutions, options.trackedResolution)),
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
function toResolveTracking(trackedFiles, trackedResolutions) {
|
|
237
|
+
return {
|
|
238
|
+
trackedFiles: [
|
|
239
|
+
...trackedFiles,
|
|
240
|
+
...trackedResolutions.flatMap((trackedResolution) => trackedResolution.candidatePaths),
|
|
241
|
+
],
|
|
242
|
+
trackedDirectories: trackedResolutions.flatMap((trackedResolution) => trackedResolution.candidatePrefixes),
|
|
210
243
|
};
|
|
211
244
|
}
|
|
212
245
|
function appendFailedTrackedResolution(trackedResolutions, trackedResolution) {
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { TsConfigJsonResolved } from 'get-tsconfig';
|
|
2
2
|
import type { AssetServerCompilationError } from '../compilation-error.ts';
|
|
3
|
+
import type { ModuleRecord, ModuleTracking } from '../module-store.ts';
|
|
3
4
|
import type { CompiledRoutes } from '../routes.ts';
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
5
|
+
import type { EmittedModule } from './emit.ts';
|
|
6
|
+
import type { ResolvedScriptTarget } from '../target.ts';
|
|
7
|
+
import type { ResolvedModule } from './resolve.ts';
|
|
8
|
+
type ScriptRecord = ModuleRecord<TransformedModule, ResolvedModule, EmittedModule>;
|
|
6
9
|
export type ResolveModuleResult = {
|
|
7
10
|
identityPath: string;
|
|
8
11
|
resolvedPath: string;
|
|
@@ -25,16 +28,15 @@ export type TransformedModule = {
|
|
|
25
28
|
trackedFiles: string[];
|
|
26
29
|
unresolvedImports: UnresolvedImport[];
|
|
27
30
|
};
|
|
28
|
-
export type TransformFailureState = {
|
|
29
|
-
trackedFiles: readonly string[];
|
|
30
|
-
};
|
|
31
31
|
type TransformResult = {
|
|
32
|
+
tracking: ModuleTracking;
|
|
33
|
+
} & ({
|
|
32
34
|
ok: true;
|
|
33
35
|
value: TransformedModule;
|
|
34
|
-
} |
|
|
36
|
+
} | {
|
|
35
37
|
ok: false;
|
|
36
38
|
error: AssetServerCompilationError;
|
|
37
|
-
}
|
|
39
|
+
});
|
|
38
40
|
type TsconfigTransformOptions = {
|
|
39
41
|
trackedFiles: string[];
|
|
40
42
|
tsconfigRaw?: TsConfigJsonResolved;
|
|
@@ -50,13 +52,13 @@ export type TransformArgs = {
|
|
|
50
52
|
routes: CompiledRoutes;
|
|
51
53
|
sourceMapSourcePaths: 'absolute' | 'url';
|
|
52
54
|
sourceMaps: 'external' | 'inline' | null;
|
|
53
|
-
target:
|
|
55
|
+
target: ResolvedScriptTarget | null;
|
|
54
56
|
tsconfigTransformOptionsResolver: TsconfigTransformOptionsResolver;
|
|
55
57
|
};
|
|
56
58
|
export declare function createTsconfigTransformOptionsResolver(): {
|
|
57
59
|
clear(): void;
|
|
58
60
|
getTransformOptions(filePath: string, isWatchIgnored: (filePath: string) => boolean): TsconfigTransformOptions;
|
|
59
61
|
};
|
|
60
|
-
export declare function transformModule(record:
|
|
62
|
+
export declare function transformModule(record: ScriptRecord, args: TransformArgs): Promise<TransformResult>;
|
|
61
63
|
export {};
|
|
62
64
|
//# sourceMappingURL=transform.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../src/lib/scripts/transform.ts"],"names":[],"mappings":"
|
|
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;AAElD,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"}
|
|
@@ -2,12 +2,15 @@ import * as fs from 'node:fs';
|
|
|
2
2
|
import * as fsp from 'node:fs/promises';
|
|
3
3
|
import * as path from 'node:path';
|
|
4
4
|
import { getTsconfig } from 'get-tsconfig';
|
|
5
|
+
import MagicString from 'magic-string';
|
|
5
6
|
import { minify } from 'oxc-minify';
|
|
7
|
+
import { parseSync, visitorKeys } from 'oxc-parser';
|
|
6
8
|
import { transform as oxcTransform } from 'oxc-transform';
|
|
7
9
|
import { init as esModuleLexerInit, parse as esModuleLexer } from 'es-module-lexer';
|
|
8
10
|
import { isCommonJS, mayContainCommonJSModuleGlobals } from "./cjs-check.js";
|
|
9
11
|
import { createAssetServerCompilationError, isAssetServerCompilationError, } from "../compilation-error.js";
|
|
10
12
|
import { generateFingerprint } from "../fingerprint.js";
|
|
13
|
+
import { maskAuthoredInjectedPackageSpecifier, mayContainInjectedPackageSpecifier, restoreAuthoredInjectedPackageSpecifier, } from "../injected-packages.js";
|
|
11
14
|
import { normalizeFilePath } from "../paths.js";
|
|
12
15
|
import { composeSourceMaps, rewriteSourceMapSources, stringifySourceMap } from "../source-maps.js";
|
|
13
16
|
const scriptModuleTypes = [
|
|
@@ -63,10 +66,12 @@ export async function transformModule(record, args) {
|
|
|
63
66
|
if (!resolvedPath) {
|
|
64
67
|
return {
|
|
65
68
|
ok: false,
|
|
66
|
-
error: createAssetServerCompilationError(`
|
|
67
|
-
code: '
|
|
69
|
+
error: createAssetServerCompilationError(`File not found: ${record.identityPath}`, {
|
|
70
|
+
code: 'FILE_NOT_FOUND',
|
|
68
71
|
}),
|
|
69
|
-
|
|
72
|
+
tracking: {
|
|
73
|
+
trackedFiles: args.isWatchIgnored(record.identityPath) ? [] : [record.identityPath],
|
|
74
|
+
},
|
|
70
75
|
};
|
|
71
76
|
}
|
|
72
77
|
let transformOptions = args.tsconfigTransformOptionsResolver.getTransformOptions(resolvedPath, args.isWatchIgnored);
|
|
@@ -82,17 +87,21 @@ export async function transformModule(record, args) {
|
|
|
82
87
|
if (isNoEntityError(error)) {
|
|
83
88
|
return {
|
|
84
89
|
ok: false,
|
|
85
|
-
error: createAssetServerCompilationError(`
|
|
90
|
+
error: createAssetServerCompilationError(`File not found: ${resolvedPath}`, {
|
|
86
91
|
cause: error,
|
|
87
|
-
code: '
|
|
92
|
+
code: 'FILE_NOT_FOUND',
|
|
88
93
|
}),
|
|
89
|
-
|
|
94
|
+
tracking: {
|
|
95
|
+
trackedFiles,
|
|
96
|
+
},
|
|
90
97
|
};
|
|
91
98
|
}
|
|
92
99
|
return {
|
|
93
100
|
ok: false,
|
|
94
101
|
error: toTransformFailedError(error, resolvedPath),
|
|
95
|
-
|
|
102
|
+
tracking: {
|
|
103
|
+
trackedFiles,
|
|
104
|
+
},
|
|
96
105
|
};
|
|
97
106
|
}
|
|
98
107
|
try {
|
|
@@ -102,25 +111,28 @@ export async function transformModule(record, args) {
|
|
|
102
111
|
sourceMaps: args.sourceMaps ?? undefined,
|
|
103
112
|
target: args.target ?? undefined,
|
|
104
113
|
});
|
|
105
|
-
analysis.unresolvedImports = analysis.unresolvedImports.filter((unresolved) => !args.externalSet.has(unresolved.specifier));
|
|
114
|
+
analysis.unresolvedImports = analysis.unresolvedImports.filter((unresolved) => !args.externalSet.has(getDisplayImportSpecifier(unresolved.specifier)));
|
|
106
115
|
if (mayContainCommonJSModuleGlobals(sourceText) && isCommonJS(analysis.rawCode)) {
|
|
107
116
|
throw createAssetServerCompilationError(`CommonJS module detected: ${resolvedPath}. ` +
|
|
108
117
|
`This module uses CommonJS (require/module.exports) which is not supported. ` +
|
|
109
118
|
`Please use an ESM-compatible module.`, {
|
|
110
|
-
code: '
|
|
119
|
+
code: 'COMMONJS_NOT_SUPPORTED',
|
|
111
120
|
});
|
|
112
121
|
}
|
|
113
122
|
let stableUrlPathname = args.routes.toUrlPathname(record.identityPath);
|
|
114
123
|
if (!stableUrlPathname) {
|
|
115
|
-
throw createAssetServerCompilationError(`
|
|
116
|
-
code: '
|
|
124
|
+
throw createAssetServerCompilationError(`File ${record.identityPath} is outside all configured fileMap entries.`, {
|
|
125
|
+
code: 'FILE_OUTSIDE_FILE_MAP',
|
|
117
126
|
});
|
|
118
127
|
}
|
|
119
128
|
let sourceMap = analysis.sourceMap
|
|
120
|
-
? rewriteSourceMapSources(analysis.sourceMap, resolvedPath, stableUrlPathname, args.sourceMapSourcePaths)
|
|
129
|
+
? rewriteSourceMapSources(analysis.sourceMap, resolvedPath, stableUrlPathname, args.sourceMapSourcePaths, sourceText)
|
|
121
130
|
: null;
|
|
122
131
|
return {
|
|
123
132
|
ok: true,
|
|
133
|
+
tracking: {
|
|
134
|
+
trackedFiles,
|
|
135
|
+
},
|
|
124
136
|
value: {
|
|
125
137
|
fingerprint: args.buildId === null
|
|
126
138
|
? null
|
|
@@ -146,7 +158,9 @@ export async function transformModule(record, args) {
|
|
|
146
158
|
return {
|
|
147
159
|
ok: false,
|
|
148
160
|
error: toTransformFailedError(error, resolvedPath),
|
|
149
|
-
|
|
161
|
+
tracking: {
|
|
162
|
+
trackedFiles,
|
|
163
|
+
},
|
|
150
164
|
};
|
|
151
165
|
}
|
|
152
166
|
}
|
|
@@ -167,17 +181,18 @@ function isPackageImportSpecifier(specifier) {
|
|
|
167
181
|
return !specifier.startsWith('./') && !specifier.startsWith('../') && !specifier.startsWith('/');
|
|
168
182
|
}
|
|
169
183
|
async function analyzeModuleSource(sourceText, resolvedPath, transformOptions, options) {
|
|
184
|
+
let maskedSourceText = maskAuthoredInjectedPackageImports(sourceText, resolvedPath);
|
|
170
185
|
let transformResult;
|
|
171
186
|
try {
|
|
172
|
-
transformResult = await oxcTransform(resolvedPath,
|
|
187
|
+
transformResult = await oxcTransform(resolvedPath, maskedSourceText, getTransformOptions(resolvedPath, transformOptions, options));
|
|
173
188
|
assertNoCompilerErrors(transformResult.errors, resolvedPath, 'transform');
|
|
174
189
|
}
|
|
175
190
|
catch (error) {
|
|
176
191
|
if (isAssetServerCompilationError(error))
|
|
177
192
|
throw error;
|
|
178
|
-
throw createAssetServerCompilationError(`Failed to transform
|
|
193
|
+
throw createAssetServerCompilationError(`Failed to transform script ${resolvedPath}. ${formatUnknownError(error)}`, {
|
|
179
194
|
cause: error,
|
|
180
|
-
code: '
|
|
195
|
+
code: 'TRANSFORM_FAILED',
|
|
181
196
|
});
|
|
182
197
|
}
|
|
183
198
|
let rawCode = transformResult.code.trimEnd();
|
|
@@ -213,9 +228,9 @@ async function minifyModule(rawCode, resolvedPath, target, sourceMaps) {
|
|
|
213
228
|
catch (error) {
|
|
214
229
|
if (isAssetServerCompilationError(error))
|
|
215
230
|
throw error;
|
|
216
|
-
throw createAssetServerCompilationError(`Failed to minify
|
|
231
|
+
throw createAssetServerCompilationError(`Failed to minify script ${resolvedPath}. ${formatUnknownError(error)}`, {
|
|
217
232
|
cause: error,
|
|
218
|
-
code: '
|
|
233
|
+
code: 'TRANSFORM_FAILED',
|
|
219
234
|
});
|
|
220
235
|
}
|
|
221
236
|
}
|
|
@@ -256,7 +271,7 @@ function getJsxOptions(resolvedPath, compilerOptions) {
|
|
|
256
271
|
if (jsx === 'preserve' || jsx === 'react-native') {
|
|
257
272
|
throw createAssetServerCompilationError(`Unsupported tsconfig compilerOptions.jsx = "${jsx}" for ${resolvedPath}. ` +
|
|
258
273
|
`Asset server must compile JSX to browser-runnable JavaScript.`, {
|
|
259
|
-
code: '
|
|
274
|
+
code: 'TRANSFORM_FAILED',
|
|
260
275
|
});
|
|
261
276
|
}
|
|
262
277
|
if (jsx === 'react-jsx' || jsx === 'react-jsxdev') {
|
|
@@ -293,8 +308,8 @@ function getStringOption(compilerOptions, key) {
|
|
|
293
308
|
function assertNoCompilerErrors(errors, resolvedPath, operation) {
|
|
294
309
|
if (!errors || errors.length === 0)
|
|
295
310
|
return;
|
|
296
|
-
throw createAssetServerCompilationError(`Failed to ${operation}
|
|
297
|
-
code: '
|
|
311
|
+
throw createAssetServerCompilationError(`Failed to ${operation} script ${resolvedPath}. ${errors[0].message ?? 'Unknown error'}`, {
|
|
312
|
+
code: 'TRANSFORM_FAILED',
|
|
298
313
|
});
|
|
299
314
|
}
|
|
300
315
|
async function getUnresolvedImportsFromLexer(rawCode) {
|
|
@@ -314,6 +329,78 @@ async function getUnresolvedImportsFromLexer(rawCode) {
|
|
|
314
329
|
}
|
|
315
330
|
return unresolvedImports;
|
|
316
331
|
}
|
|
332
|
+
function getDisplayImportSpecifier(specifier) {
|
|
333
|
+
return restoreAuthoredInjectedPackageSpecifier(specifier) ?? specifier;
|
|
334
|
+
}
|
|
335
|
+
function maskAuthoredInjectedPackageImports(sourceText, resolvedPath) {
|
|
336
|
+
if (!mayContainInjectedPackageSpecifier(sourceText)) {
|
|
337
|
+
return sourceText;
|
|
338
|
+
}
|
|
339
|
+
let parseResult = parseSync(resolvedPath, sourceText, {
|
|
340
|
+
lang: getSourceLanguageForPath(resolvedPath),
|
|
341
|
+
sourceType: 'module',
|
|
342
|
+
});
|
|
343
|
+
if (parseResult.errors.length > 0) {
|
|
344
|
+
return sourceText;
|
|
345
|
+
}
|
|
346
|
+
let replacements = [];
|
|
347
|
+
walkAst(parseResult.program, (node) => {
|
|
348
|
+
if (node.type !== 'ImportDeclaration' &&
|
|
349
|
+
node.type !== 'ExportAllDeclaration' &&
|
|
350
|
+
node.type !== 'ExportNamedDeclaration' &&
|
|
351
|
+
node.type !== 'ImportExpression') {
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
let source = 'source' in node ? node.source : null;
|
|
355
|
+
if (!isStringLiteralNode(source))
|
|
356
|
+
return;
|
|
357
|
+
let maskedSpecifier = maskAuthoredInjectedPackageSpecifier(source.value);
|
|
358
|
+
if (maskedSpecifier == null)
|
|
359
|
+
return;
|
|
360
|
+
replacements.push({
|
|
361
|
+
end: source.end - 1,
|
|
362
|
+
specifier: maskedSpecifier,
|
|
363
|
+
start: source.start + 1,
|
|
364
|
+
});
|
|
365
|
+
});
|
|
366
|
+
if (replacements.length === 0)
|
|
367
|
+
return sourceText;
|
|
368
|
+
let rewrittenSource = new MagicString(sourceText);
|
|
369
|
+
for (let replacement of replacements) {
|
|
370
|
+
rewrittenSource.overwrite(replacement.start, replacement.end, replacement.specifier);
|
|
371
|
+
}
|
|
372
|
+
return rewrittenSource.toString();
|
|
373
|
+
}
|
|
374
|
+
function walkAst(node, visit) {
|
|
375
|
+
visit(node);
|
|
376
|
+
let keys = visitorKeys[node.type];
|
|
377
|
+
if (!keys)
|
|
378
|
+
return;
|
|
379
|
+
let walkableNode = node;
|
|
380
|
+
for (let key of keys) {
|
|
381
|
+
let value = walkableNode[key];
|
|
382
|
+
if (Array.isArray(value)) {
|
|
383
|
+
for (let child of value) {
|
|
384
|
+
if (isAstNode(child)) {
|
|
385
|
+
walkAst(child, visit);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
continue;
|
|
389
|
+
}
|
|
390
|
+
if (isAstNode(value)) {
|
|
391
|
+
walkAst(value, visit);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
function isAstNode(value) {
|
|
396
|
+
return typeof value === 'object' && value !== null && 'type' in value;
|
|
397
|
+
}
|
|
398
|
+
function isStringLiteralNode(node) {
|
|
399
|
+
return (node?.type === 'Literal' &&
|
|
400
|
+
typeof node.start === 'number' &&
|
|
401
|
+
typeof node.end === 'number' &&
|
|
402
|
+
typeof node.value === 'string');
|
|
403
|
+
}
|
|
317
404
|
function getStaticImportSpecifier(source, imported) {
|
|
318
405
|
if (imported.n != null) {
|
|
319
406
|
return imported.n;
|
|
@@ -352,9 +439,9 @@ function formatUnknownError(error) {
|
|
|
352
439
|
function toTransformFailedError(error, resolvedPath) {
|
|
353
440
|
if (isAssetServerCompilationError(error))
|
|
354
441
|
return error;
|
|
355
|
-
return createAssetServerCompilationError(`Failed to transform
|
|
442
|
+
return createAssetServerCompilationError(`Failed to transform script ${resolvedPath}. ${formatUnknownError(error)}`, {
|
|
356
443
|
cause: error,
|
|
357
|
-
code: '
|
|
444
|
+
code: 'TRANSFORM_FAILED',
|
|
358
445
|
});
|
|
359
446
|
}
|
|
360
447
|
function isNoEntityError(error) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare function composeSourceMaps(rewriteSourceMap: string, transformSourceMap: string): string;
|
|
2
|
-
export declare function rewriteSourceMapSources(sourceMap: string, resolvedPath: string, stableUrlPathname: string, sourceMapSourcePaths: 'absolute' | 'url'): string;
|
|
2
|
+
export declare function rewriteSourceMapSources(sourceMap: string, resolvedPath: string, stableUrlPathname: string, sourceMapSourcePaths: 'absolute' | 'url', sourceContent?: string): string;
|
|
3
3
|
export declare function stringifySourceMap(map: unknown): string | null;
|
|
4
4
|
//# sourceMappingURL=source-maps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-maps.d.ts","sourceRoot":"","sources":["../../src/lib/source-maps.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CA2C9F;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,oBAAoB,EAAE,UAAU,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"source-maps.d.ts","sourceRoot":"","sources":["../../src/lib/source-maps.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CA2C9F;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,oBAAoB,EAAE,UAAU,GAAG,KAAK,EACxC,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CASR;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQ9D"}
|
package/dist/lib/source-maps.js
CHANGED
|
@@ -38,11 +38,14 @@ export function composeSourceMaps(rewriteSourceMap, transformSourceMap) {
|
|
|
38
38
|
}
|
|
39
39
|
return JSON.stringify(generator.toJSON());
|
|
40
40
|
}
|
|
41
|
-
export function rewriteSourceMapSources(sourceMap, resolvedPath, stableUrlPathname, sourceMapSourcePaths) {
|
|
41
|
+
export function rewriteSourceMapSources(sourceMap, resolvedPath, stableUrlPathname, sourceMapSourcePaths, sourceContent) {
|
|
42
42
|
let json = JSON.parse(sourceMap);
|
|
43
43
|
json.sources = [
|
|
44
44
|
sourceMapSourcePaths === 'absolute' ? normalizeFilePath(resolvedPath) : stableUrlPathname,
|
|
45
45
|
];
|
|
46
|
+
if (sourceContent !== undefined) {
|
|
47
|
+
json.sourcesContent = [sourceContent];
|
|
48
|
+
}
|
|
46
49
|
return JSON.stringify(json);
|
|
47
50
|
}
|
|
48
51
|
export function stringifySourceMap(map) {
|
|
@@ -50,6 +53,9 @@ export function stringifySourceMap(map) {
|
|
|
50
53
|
return null;
|
|
51
54
|
if (typeof map === 'string')
|
|
52
55
|
return map;
|
|
56
|
+
if (map instanceof Uint8Array) {
|
|
57
|
+
return Buffer.from(map).toString('utf8');
|
|
58
|
+
}
|
|
53
59
|
if (typeof map === 'object' && map !== null)
|
|
54
60
|
return JSON.stringify(map);
|
|
55
61
|
return String(map);
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { CompiledRoutes } from '../routes.ts';
|
|
2
|
+
import type { ResolvedStyleTarget } from '../target.ts';
|
|
3
|
+
import type { EmittedAsset } from './emit.ts';
|
|
4
|
+
type StyleCompileResult = {
|
|
5
|
+
code: EmittedAsset;
|
|
6
|
+
fingerprint: string | null;
|
|
7
|
+
sourceMap: EmittedAsset | null;
|
|
8
|
+
};
|
|
9
|
+
type StyleGetResult = {
|
|
10
|
+
style: StyleCompileResult;
|
|
11
|
+
type: 'style';
|
|
12
|
+
} | {
|
|
13
|
+
etag: string;
|
|
14
|
+
type: 'not-modified';
|
|
15
|
+
};
|
|
16
|
+
type StyleGetOptions = {
|
|
17
|
+
ifNoneMatch: string | null;
|
|
18
|
+
isSourceMapRequest: boolean;
|
|
19
|
+
requestedFingerprint: string | null;
|
|
20
|
+
};
|
|
21
|
+
type StyleCompilerOptions = {
|
|
22
|
+
buildId?: string;
|
|
23
|
+
fingerprintAssets: boolean;
|
|
24
|
+
isAllowed(absolutePath: string): boolean;
|
|
25
|
+
minify: boolean;
|
|
26
|
+
onWatchDirectoriesChange?: (delta: {
|
|
27
|
+
add: string[];
|
|
28
|
+
remove: string[];
|
|
29
|
+
}) => void;
|
|
30
|
+
rootDir: string;
|
|
31
|
+
routes: CompiledRoutes;
|
|
32
|
+
sourceMapSourcePaths: 'absolute' | 'url';
|
|
33
|
+
sourceMaps?: 'external' | 'inline';
|
|
34
|
+
targets?: ResolvedStyleTarget;
|
|
35
|
+
watchIgnore?: readonly string[];
|
|
36
|
+
};
|
|
37
|
+
type StyleCompiler = {
|
|
38
|
+
getHref(filePath: string): Promise<string>;
|
|
39
|
+
getPreloadLayers(filePath: string | readonly string[]): Promise<string[][]>;
|
|
40
|
+
getStyle(filePath: string, options: StyleGetOptions): Promise<StyleGetResult>;
|
|
41
|
+
handleFileEvent(filePath: string, event: 'add' | 'change' | 'unlink'): Promise<void>;
|
|
42
|
+
};
|
|
43
|
+
export declare function createStyleCompiler(options: StyleCompilerOptions): StyleCompiler;
|
|
44
|
+
export declare function isStyleFilePath(filePath: string): boolean;
|
|
45
|
+
export declare function createResponseForStyle(result: StyleCompileResult, options: {
|
|
46
|
+
cacheControl: string;
|
|
47
|
+
ifNoneMatch: string | null;
|
|
48
|
+
isSourceMapRequest: boolean;
|
|
49
|
+
method: string;
|
|
50
|
+
}): Response;
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/lib/styles/compiler.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,WAAW,CAAA;AAS3D,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,YAAY,CAAA;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,YAAY,GAAG,IAAI,CAAA;CAC/B,CAAA;AAED,KAAK,cAAc,GACf;IACE,KAAK,EAAE,kBAAkB,CAAA;IACzB,IAAI,EAAE,OAAO,CAAA;CACd,GACD;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,cAAc,CAAA;CACrB,CAAA;AAEL,KAAK,eAAe,GAAG;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAA;IACxC,MAAM,EAAE,OAAO,CAAA;IACf,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,IAAI,CAAA;IAC/E,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,oBAAoB,EAAE,UAAU,GAAG,KAAK,CAAA;IACxC,UAAU,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAA;IAClC,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7E,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrF,CAAA;AAKD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAiOhF;AAkED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE;IACP,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;CACf,GACA,QAAQ,CA6BV"}
|