@remix-run/assets 0.1.0 → 0.2.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.
Files changed (57) hide show
  1. package/README.md +53 -47
  2. package/dist/lib/asset-server.d.ts +45 -43
  3. package/dist/lib/asset-server.d.ts.map +1 -1
  4. package/dist/lib/asset-server.js +142 -46
  5. package/dist/lib/compilation-error.d.ts +2 -2
  6. package/dist/lib/compilation-error.d.ts.map +1 -1
  7. package/dist/lib/compilation-error.js +1 -1
  8. package/dist/lib/file-matcher.d.ts.map +1 -1
  9. package/dist/lib/file-matcher.js +3 -2
  10. package/dist/lib/module-store.d.ts +41 -0
  11. package/dist/lib/module-store.d.ts.map +1 -0
  12. package/dist/lib/{scripts/store.js → module-store.js} +43 -41
  13. package/dist/lib/scripts/compiler.d.ts +15 -15
  14. package/dist/lib/scripts/compiler.d.ts.map +1 -1
  15. package/dist/lib/scripts/compiler.js +50 -46
  16. package/dist/lib/scripts/emit.js +2 -2
  17. package/dist/lib/scripts/resolve.d.ts +7 -17
  18. package/dist/lib/scripts/resolve.d.ts.map +1 -1
  19. package/dist/lib/scripts/resolve.js +15 -9
  20. package/dist/lib/scripts/transform.d.ts +11 -9
  21. package/dist/lib/scripts/transform.d.ts.map +1 -1
  22. package/dist/lib/scripts/transform.js +32 -21
  23. package/dist/lib/source-maps.d.ts +1 -1
  24. package/dist/lib/source-maps.d.ts.map +1 -1
  25. package/dist/lib/source-maps.js +7 -1
  26. package/dist/lib/styles/compiler.d.ts +52 -0
  27. package/dist/lib/styles/compiler.d.ts.map +1 -0
  28. package/dist/lib/styles/compiler.js +272 -0
  29. package/dist/lib/styles/emit.d.ts +25 -0
  30. package/dist/lib/styles/emit.d.ts.map +1 -0
  31. package/dist/lib/styles/emit.js +78 -0
  32. package/dist/lib/styles/resolve.d.ts +48 -0
  33. package/dist/lib/styles/resolve.d.ts.map +1 -0
  34. package/dist/lib/styles/resolve.js +188 -0
  35. package/dist/lib/styles/transform.d.ts +47 -0
  36. package/dist/lib/styles/transform.d.ts.map +1 -0
  37. package/dist/lib/styles/transform.js +131 -0
  38. package/dist/lib/target.d.ts +21 -0
  39. package/dist/lib/target.d.ts.map +1 -0
  40. package/dist/lib/target.js +127 -0
  41. package/package.json +7 -2
  42. package/src/lib/asset-server.ts +218 -96
  43. package/src/lib/compilation-error.ts +7 -7
  44. package/src/lib/file-matcher.ts +3 -2
  45. package/src/lib/{scripts/store.ts → module-store.ts} +100 -87
  46. package/src/lib/scripts/compiler.ts +88 -70
  47. package/src/lib/scripts/emit.ts +2 -2
  48. package/src/lib/scripts/resolve.ts +34 -23
  49. package/src/lib/scripts/transform.ts +49 -34
  50. package/src/lib/source-maps.ts +8 -1
  51. package/src/lib/styles/compiler.ts +400 -0
  52. package/src/lib/styles/emit.ts +137 -0
  53. package/src/lib/styles/resolve.ts +316 -0
  54. package/src/lib/styles/transform.ts +226 -0
  55. package/src/lib/target.ts +196 -0
  56. package/dist/lib/scripts/store.d.ts +0 -40
  57. package/dist/lib/scripts/store.d.ts.map +0 -1
@@ -1,6 +1,6 @@
1
- type AssetServerCompilationErrorCode = 'MODULE_NOT_FOUND' | 'MODULE_NOT_ALLOWED' | 'MODULE_OUTSIDE_FILE_MAP' | 'MODULE_COMMONJS_NOT_SUPPORTED' | 'MODULE_TRANSFORM_FAILED' | 'MODULE_EMIT_FAILED' | 'IMPORT_RESOLUTION_FAILED' | 'IMPORT_NOT_SUPPORTED' | 'IMPORT_NOT_ALLOWED' | 'IMPORT_OUTSIDE_FILE_MAP';
1
+ type AssetServerCompilationErrorCode = 'FILE_NOT_FOUND' | 'FILE_NOT_ALLOWED' | 'FILE_OUTSIDE_FILE_MAP' | 'COMMONJS_NOT_SUPPORTED' | 'TRANSFORM_FAILED' | 'EMIT_FAILED' | 'IMPORT_RESOLUTION_FAILED' | 'IMPORT_NOT_SUPPORTED' | 'IMPORT_NOT_ALLOWED' | 'IMPORT_OUTSIDE_FILE_MAP';
2
2
  /**
3
- * Internal error used by the request-time module compilation pipeline.
3
+ * Internal error used by the request-time asset compilation pipeline.
4
4
  */
5
5
  export declare class AssetServerCompilationError extends Error {
6
6
  code: AssetServerCompilationErrorCode;
@@ -1 +1 @@
1
- {"version":3,"file":"compilation-error.d.ts","sourceRoot":"","sources":["../../src/lib/compilation-error.ts"],"names":[],"mappings":"AAAA,KAAK,+BAA+B,GAChC,kBAAkB,GAClB,oBAAoB,GACpB,yBAAyB,GACzB,+BAA+B,GAC/B,yBAAyB,GACzB,oBAAoB,GACpB,0BAA0B,GAC1B,sBAAsB,GACtB,oBAAoB,GACpB,yBAAyB,CAAA;AAE7B;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,IAAI,EAAE,+BAA+B,CAAA;IAErC,YACE,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,IAAI,EAAE,+BAA+B,CAAA;KACtC,EAKF;CACF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,2BAA2B,CAEtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,+BAA+B,CAAA;CACtC,GACA,2BAA2B,CAE7B"}
1
+ {"version":3,"file":"compilation-error.d.ts","sourceRoot":"","sources":["../../src/lib/compilation-error.ts"],"names":[],"mappings":"AAAA,KAAK,+BAA+B,GAChC,gBAAgB,GAChB,kBAAkB,GAClB,uBAAuB,GACvB,wBAAwB,GACxB,kBAAkB,GAClB,aAAa,GACb,0BAA0B,GAC1B,sBAAsB,GACtB,oBAAoB,GACpB,yBAAyB,CAAA;AAE7B;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,IAAI,EAAE,+BAA+B,CAAA;IAErC,YACE,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,IAAI,EAAE,+BAA+B,CAAA;KACtC,EAKF;CACF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,2BAA2B,CAEtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,+BAA+B,CAAA;CACtC,GACA,2BAA2B,CAE7B"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Internal error used by the request-time module compilation pipeline.
2
+ * Internal error used by the request-time asset compilation pipeline.
3
3
  */
4
4
  export class AssetServerCompilationError extends Error {
5
5
  code;
@@ -1 +1 @@
1
- {"version":3,"file":"file-matcher.d.ts","sourceRoot":"","sources":["../../src/lib/file-matcher.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;AAEvD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAA;CAClB,GACL,WAAW,CA0Bb"}
1
+ {"version":3,"file":"file-matcher.d.ts","sourceRoot":"","sources":["../../src/lib/file-matcher.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;AAEvD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAA;CAClB,GACL,WAAW,CA2Bb"}
@@ -1,5 +1,5 @@
1
1
  import * as fs from 'node:fs';
2
- import * as path from 'node:path';
2
+ import picomatch from 'picomatch';
3
3
  import { normalizeFilePath, resolveFilePath } from "./paths.js";
4
4
  export function createFileMatcher(pattern, rootDir, options = {}) {
5
5
  let resolvedPatternPath = resolveFilePath(rootDir, pattern);
@@ -26,7 +26,8 @@ export function createFileMatcher(pattern, rootDir, options = {}) {
26
26
  }
27
27
  return (filePath) => filePath === resolvedPatternPath;
28
28
  }
29
- return (filePath) => path.posix.matchesGlob(filePath, resolvedPatternPath);
29
+ let globMatcher = picomatch(resolvedPatternPath, { dot: true });
30
+ return (filePath) => globMatcher(filePath);
30
31
  }
31
32
  function isSameOrDescendantPath(filePath, directoryPath) {
32
33
  let normalizedDirectoryPath = directoryPath.replace(/\/+$/, '');
@@ -0,0 +1,41 @@
1
+ export type ModuleTracking = {
2
+ trackedFiles: readonly string[];
3
+ trackedDirectories?: readonly string[];
4
+ };
5
+ export type ModuleWatchEvent = 'change' | 'add' | 'unlink';
6
+ export type FileSnapshot = {
7
+ mtimeNs: bigint;
8
+ size: bigint;
9
+ };
10
+ export type ModuleSnapshot = ReadonlyMap<string, FileSnapshot>;
11
+ type ModuleRecordState<transformed, resolved, emitted> = {
12
+ identityPath: string;
13
+ invalidationVersion: number;
14
+ transformed?: transformed;
15
+ resolved?: resolved;
16
+ emitted?: emitted;
17
+ emittedSnapshot?: ModuleSnapshot;
18
+ staleEmitted?: emitted;
19
+ staleEmittedSnapshot?: ModuleSnapshot;
20
+ trackedFiles: ReadonlySet<string>;
21
+ trackedDirectories: ReadonlySet<string>;
22
+ };
23
+ export type ModuleRecord<transformed, resolved, emitted> = Readonly<ModuleRecordState<transformed, resolved, emitted>>;
24
+ export type ModuleStore<transformed, resolved, emitted> = {
25
+ get(identityPath: string): ModuleRecord<transformed, resolved, emitted>;
26
+ clearTransformed(identityPath: string, tracking: readonly ModuleTracking[]): void;
27
+ setTransformed(identityPath: string, transformed: transformed, tracking: readonly ModuleTracking[]): void;
28
+ setResolved(identityPath: string, resolved: resolved, tracking: readonly ModuleTracking[]): void;
29
+ clearResolved(identityPath: string, tracking: readonly ModuleTracking[]): void;
30
+ setEmitted(identityPath: string, emitted: emitted, snapshot: ModuleSnapshot | null): void;
31
+ invalidateForFileEvent(filePath: string, event: ModuleWatchEvent): void;
32
+ invalidateAll(): void;
33
+ };
34
+ export declare function createModuleStore<transformed, resolved, emitted>(options?: {
35
+ onWatchDirectoriesChange?: (delta: {
36
+ add: string[];
37
+ remove: string[];
38
+ }) => void;
39
+ }): ModuleStore<transformed, resolved, emitted>;
40
+ export {};
41
+ //# sourceMappingURL=module-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-store.d.ts","sourceRoot":"","sources":["../../src/lib/module-store.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAA;AAE1D,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AAE9D,KAAK,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,IAAI;IACvD,YAAY,EAAE,MAAM,CAAA;IACpB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,oBAAoB,CAAC,EAAE,cAAc,CAAA;IACrC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACjC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,IAAI,QAAQ,CACjE,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAClD,CAAA;AAeD,MAAM,MAAM,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,IAAI;IACxD,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IACvE,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,CAAA;IACjF,cAAc,CACZ,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,SAAS,cAAc,EAAE,GAClC,IAAI,CAAA;IACP,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,CAAA;IAChG,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,CAAA;IAC9E,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAAA;IACzF,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACvE,aAAa,IAAI,IAAI,CAAA;CACtB,CAAA;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAC9D,OAAO,GAAE;IACP,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,IAAI,CAAA;CAC3E,GACL,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CA4M7C"}
@@ -1,4 +1,4 @@
1
- import { getFilePathDirectory } from "../paths.js";
1
+ import { getFilePathDirectory } from "./paths.js";
2
2
  export function createModuleStore(options = {}) {
3
3
  let recordsByIdentityPath = new Map();
4
4
  let recordsByTrackedFile = new Map();
@@ -12,12 +12,12 @@ export function createModuleStore(options = {}) {
12
12
  identityPath,
13
13
  invalidationVersion: 0,
14
14
  trackedFiles: new Set(),
15
- trackedResolutions: [],
15
+ trackedDirectories: new Set(),
16
16
  };
17
17
  recordsByIdentityPath.set(identityPath, record);
18
18
  return record;
19
19
  },
20
- setTransformFailure(identityPath, failure) {
20
+ clearTransformed(identityPath, tracking) {
21
21
  let record = getOrCreateMutableRecord(identityPath);
22
22
  record.transformed = undefined;
23
23
  record.resolved = undefined;
@@ -25,12 +25,9 @@ export function createModuleStore(options = {}) {
25
25
  record.emittedSnapshot = undefined;
26
26
  record.staleEmitted = undefined;
27
27
  record.staleEmittedSnapshot = undefined;
28
- setTracking(record, {
29
- trackedFiles: failure.trackedFiles,
30
- trackedResolutions: [],
31
- });
28
+ setTracking(record, tracking);
32
29
  },
33
- setTransformed(identityPath, transformed) {
30
+ setTransformed(identityPath, transformed, tracking) {
34
31
  let record = getOrCreateMutableRecord(identityPath);
35
32
  record.transformed = transformed;
36
33
  record.resolved = undefined;
@@ -38,34 +35,25 @@ export function createModuleStore(options = {}) {
38
35
  record.emittedSnapshot = undefined;
39
36
  record.staleEmitted = undefined;
40
37
  record.staleEmittedSnapshot = undefined;
41
- setTracking(record, {
42
- trackedFiles: transformed.trackedFiles,
43
- trackedResolutions: [],
44
- });
38
+ setTracking(record, tracking);
45
39
  },
46
- setResolved(identityPath, resolved) {
40
+ setResolved(identityPath, resolved, tracking) {
47
41
  let record = getOrCreateMutableRecord(identityPath);
48
42
  record.resolved = resolved;
49
43
  record.emitted = undefined;
50
44
  record.emittedSnapshot = undefined;
51
45
  record.staleEmitted = undefined;
52
46
  record.staleEmittedSnapshot = undefined;
53
- setTracking(record, {
54
- trackedFiles: resolved.trackedFiles,
55
- trackedResolutions: resolved.trackedResolutions,
56
- });
47
+ setTracking(record, tracking);
57
48
  },
58
- setResolveFailure(identityPath, failure) {
49
+ clearResolved(identityPath, tracking) {
59
50
  let record = getOrCreateMutableRecord(identityPath);
60
51
  record.resolved = undefined;
61
52
  record.emitted = undefined;
62
53
  record.emittedSnapshot = undefined;
63
54
  record.staleEmitted = undefined;
64
55
  record.staleEmittedSnapshot = undefined;
65
- setTracking(record, {
66
- trackedFiles: failure.trackedFiles,
67
- trackedResolutions: failure.trackedResolutions,
68
- });
56
+ setTracking(record, tracking);
69
57
  },
70
58
  setEmitted(identityPath, emitted, snapshot) {
71
59
  let record = getOrCreateMutableRecord(identityPath);
@@ -78,7 +66,7 @@ export function createModuleStore(options = {}) {
78
66
  let affected = new Set(recordsByTrackedFile.get(filePath) ?? []);
79
67
  if (event !== 'change') {
80
68
  for (let record of recordsByIdentityPath.values()) {
81
- if (record.trackedResolutions.some((tracked) => mayAffectTrackedResolution(tracked, filePath))) {
69
+ if (matchesTrackedDirectory(record.trackedDirectories, filePath)) {
82
70
  affected.add(record.identityPath);
83
71
  }
84
72
  }
@@ -109,7 +97,7 @@ export function createModuleStore(options = {}) {
109
97
  identityPath,
110
98
  invalidationVersion: 0,
111
99
  trackedFiles: new Set(),
112
- trackedResolutions: [],
100
+ trackedDirectories: new Set(),
113
101
  };
114
102
  recordsByIdentityPath.set(identityPath, record);
115
103
  return record;
@@ -136,8 +124,9 @@ export function createModuleStore(options = {}) {
136
124
  function setTracking(record, tracking) {
137
125
  let previousWatchedDirectories = getWatchedDirectories(record);
138
126
  removeIndexes(record);
139
- record.trackedFiles = new Set(tracking.trackedFiles);
140
- record.trackedResolutions = [...tracking.trackedResolutions];
127
+ let normalizedTracking = mergeTracking(tracking);
128
+ record.trackedFiles = normalizedTracking.trackedFiles;
129
+ record.trackedDirectories = normalizedTracking.trackedDirectories;
141
130
  for (let trackedFile of record.trackedFiles) {
142
131
  addToIndexedSet(recordsByTrackedFile, trackedFile, record.identityPath);
143
132
  }
@@ -146,10 +135,7 @@ export function createModuleStore(options = {}) {
146
135
  emitWatchDirectoryDelta(delta);
147
136
  }
148
137
  function clearTracking(record) {
149
- setTracking(record, {
150
- trackedFiles: [],
151
- trackedResolutions: [],
152
- });
138
+ setTracking(record, []);
153
139
  }
154
140
  function removeIndexes(record) {
155
141
  for (let trackedFile of record.trackedFiles) {
@@ -206,23 +192,39 @@ function removeFromIndexedSet(map, key, value) {
206
192
  map.delete(key);
207
193
  }
208
194
  }
209
- function mayAffectTrackedResolution(trackedResolution, filePath) {
210
- return (trackedResolution.candidatePaths.includes(filePath) ||
211
- trackedResolution.candidatePrefixes.some((prefix) => filePath.startsWith(prefix)));
195
+ function matchesTrackedDirectory(trackedDirectories, filePath) {
196
+ for (let trackedDirectory of trackedDirectories) {
197
+ if (filePath === trackedDirectory || filePath.startsWith(`${trackedDirectory}/`))
198
+ return true;
199
+ }
200
+ return false;
201
+ }
202
+ function normalizeTrackedDirectory(trackedDirectory) {
203
+ return trackedDirectory.replace(/\/+$/, '') || '/';
204
+ }
205
+ function mergeTracking(tracking) {
206
+ let trackedFiles = new Set();
207
+ let trackedDirectories = new Set();
208
+ for (let fragment of tracking) {
209
+ for (let trackedFile of fragment.trackedFiles) {
210
+ trackedFiles.add(trackedFile);
211
+ }
212
+ for (let trackedDirectory of fragment.trackedDirectories ?? []) {
213
+ trackedDirectories.add(normalizeTrackedDirectory(trackedDirectory));
214
+ }
215
+ }
216
+ return {
217
+ trackedFiles,
218
+ trackedDirectories,
219
+ };
212
220
  }
213
221
  function getWatchedDirectories(record) {
214
222
  let watchedDirectories = new Set();
215
223
  for (let trackedFile of record.trackedFiles) {
216
224
  watchedDirectories.add(getFilePathDirectory(trackedFile));
217
225
  }
218
- for (let trackedResolution of record.trackedResolutions) {
219
- for (let candidatePath of trackedResolution.candidatePaths) {
220
- watchedDirectories.add(getFilePathDirectory(candidatePath));
221
- }
222
- for (let candidatePrefix of trackedResolution.candidatePrefixes) {
223
- let directoryPath = candidatePrefix.replace(/\/+$/, '') || '/';
224
- watchedDirectories.add(directoryPath);
225
- }
226
+ for (let trackedDirectory of record.trackedDirectories) {
227
+ watchedDirectories.add(trackedDirectory);
226
228
  }
227
229
  return watchedDirectories;
228
230
  }
@@ -1,28 +1,29 @@
1
1
  import type { CompiledRoutes } from '../routes.ts';
2
- import type { ScriptsTarget } from '../asset-server.ts';
2
+ import type { ResolvedScriptTarget } from '../target.ts';
3
+ import type { ModuleWatchEvent } from '../module-store.ts';
3
4
  import type { EmittedAsset } from './emit.ts';
4
- type ModuleCompileResult = {
5
+ type ScriptCompileResult = {
5
6
  code: EmittedAsset;
6
7
  fingerprint: string | null;
7
8
  sourceMap: EmittedAsset | null;
8
9
  };
9
- type ModuleGetResult = {
10
- type: 'module';
11
- module: ModuleCompileResult;
10
+ type ScriptGetResult = {
11
+ script: ScriptCompileResult;
12
+ type: 'script';
12
13
  } | {
13
14
  type: 'not-modified';
14
15
  etag: string;
15
16
  };
16
- type ModuleGetOptions = {
17
+ type ScriptGetOptions = {
17
18
  ifNoneMatch: string | null;
18
19
  isSourceMapRequest: boolean;
19
20
  requestedFingerprint: string | null;
20
21
  };
21
- type ModuleCompilerOptions = {
22
+ type ScriptCompilerOptions = {
22
23
  buildId?: string;
23
24
  define?: Record<string, string>;
24
25
  external: string[];
25
- fingerprintModules: boolean;
26
+ fingerprintAssets: boolean;
26
27
  isAllowed(absolutePath: string): boolean;
27
28
  minify: boolean;
28
29
  onWatchDirectoriesChange?: (delta: {
@@ -33,14 +34,13 @@ type ModuleCompilerOptions = {
33
34
  routes: CompiledRoutes;
34
35
  sourceMapSourcePaths: 'absolute' | 'url';
35
36
  sourceMaps?: 'external' | 'inline';
36
- target?: ScriptsTarget;
37
+ target?: ResolvedScriptTarget;
37
38
  watchIgnore?: readonly string[];
38
39
  watchMode: boolean;
39
40
  };
40
- type ModuleWatchEvent = 'add' | 'change' | 'unlink';
41
- type ModuleCompiler = {
42
- getModule(filePath: string, options: ModuleGetOptions): Promise<ModuleGetResult>;
43
- getPreloadUrls(filePath: string | readonly string[]): Promise<string[]>;
41
+ type ScriptCompiler = {
42
+ getScript(filePath: string, options: ScriptGetOptions): Promise<ScriptGetResult>;
43
+ getPreloadLayers(filePath: string | readonly string[]): Promise<string[][]>;
44
44
  getHref(filePath: string): Promise<string>;
45
45
  handleFileEvent(filePath: string, event: ModuleWatchEvent): Promise<void>;
46
46
  parseRequestPathname(pathname: string): ParsedRequestPathname | null;
@@ -51,8 +51,8 @@ type ParsedRequestPathname = {
51
51
  isSourceMapRequest: boolean;
52
52
  requestedFingerprint: string | null;
53
53
  };
54
- export declare function createModuleCompiler(options: ModuleCompilerOptions): ModuleCompiler;
55
- export declare function createResponseForModule(result: ModuleCompileResult, options: {
54
+ export declare function createScriptCompiler(options: ScriptCompilerOptions): ScriptCompiler;
55
+ export declare function createResponseForScript(result: ScriptCompileResult, options: {
56
56
  cacheControl: string;
57
57
  ifNoneMatch: string | null;
58
58
  isSourceMapRequest: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/lib/scripts/compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/lib/scripts/compiler.ts"],"names":[],"mappings":"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"}
@@ -9,18 +9,18 @@ import { formatFingerprintedPathname, getFingerprintRequestCacheControl, parseFi
9
9
  import { emitResolvedModule } from "./emit.js";
10
10
  import { normalizeFilePath, resolveFilePath } from "../paths.js";
11
11
  import { resolveModule, resolverExtensionAlias, resolverExtensions, supportedScriptExtensions, } from "./resolve.js";
12
- import { createModuleStore } from "./store.js";
12
+ import { createModuleStore } from "../module-store.js";
13
13
  import { createTsconfigTransformOptionsResolver, transformModule } from "./transform.js";
14
14
  import { ResolverFactory } from 'oxc-resolver';
15
15
  const supportedScriptExtensionSet = new Set(supportedScriptExtensions);
16
16
  const preloadConcurrency = Math.max(1, Math.min(8, os.availableParallelism() - 1));
17
- export function createModuleCompiler(options) {
17
+ export function createScriptCompiler(options) {
18
18
  let resolvedOptions = {
19
19
  ...options,
20
20
  externalSet: new Set(options.external),
21
21
  watchIgnoreMatchers: (options.watchIgnore ?? []).map((pattern) => createFileMatcher(pattern, options.rootDir)),
22
22
  };
23
- let store = createModuleStore({
23
+ let scriptStore = createModuleStore({
24
24
  onWatchDirectoriesChange: options.onWatchDirectoriesChange,
25
25
  });
26
26
  let tsconfigTransformOptionsResolver = createTsconfigTransformOptionsResolver();
@@ -55,22 +55,22 @@ export function createModuleCompiler(options) {
55
55
  routes: resolvedOptions.routes,
56
56
  };
57
57
  return {
58
- async getModule(filePath, getOptions) {
59
- let resolvedModule = resolveServedModuleOrThrow(resolveInputFilePath(filePath));
60
- let record = store.get(resolvedModule.identityPath);
61
- let notModified = getNotModifiedModule(record, getOptions);
58
+ async getScript(filePath, getOptions) {
59
+ let resolvedModule = resolveServedScriptOrThrow(resolveInputFilePath(filePath));
60
+ let record = scriptStore.get(resolvedModule.identityPath);
61
+ let notModified = getNotModifiedScript(record, getOptions);
62
62
  if (notModified)
63
63
  return notModified;
64
- let emitted = await getOrCreateEmittedModule(record);
64
+ let emitted = await getOrCreateEmittedScript(record);
65
65
  return {
66
- type: 'module',
67
- module: toModuleCompileResult(emitted),
66
+ script: toScriptCompileResult(emitted),
67
+ type: 'script',
68
68
  };
69
69
  },
70
- async getPreloadUrls(filePath) {
70
+ async getPreloadLayers(filePath) {
71
71
  let resolvedEntries = [];
72
72
  let seen = new Set();
73
- for (let resolvedModule of (Array.isArray(filePath) ? filePath : [filePath]).map((nextPath) => resolveServedModuleOrThrow(resolveInputFilePath(nextPath)))) {
73
+ for (let resolvedModule of (Array.isArray(filePath) ? filePath : [filePath]).map((nextPath) => resolveServedScriptOrThrow(resolveInputFilePath(nextPath)))) {
74
74
  if (seen.has(resolvedModule.identityPath))
75
75
  continue;
76
76
  seen.add(resolvedModule.identityPath);
@@ -78,13 +78,14 @@ export function createModuleCompiler(options) {
78
78
  }
79
79
  let visited = new Set(resolvedEntries);
80
80
  let queue = [...resolvedEntries];
81
- let urls = [];
81
+ let layers = [];
82
82
  while (queue.length > 0) {
83
83
  let frontier = queue;
84
84
  queue = [];
85
- let resolvedModules = await getOrCreateResolvedModules(frontier.map((identityPath) => store.get(identityPath)));
85
+ let resolvedModules = await getOrCreateResolvedScripts(frontier.map((identityPath) => scriptStore.get(identityPath)));
86
+ let layer = [];
86
87
  for (let resolvedModule of resolvedModules) {
87
- urls.push(getServedUrlForResolvedModule(resolvedModule));
88
+ layer.push(getServedUrlForResolvedScript(resolvedModule));
88
89
  for (let dep of resolvedModule.deps) {
89
90
  if (visited.has(dep))
90
91
  continue;
@@ -92,11 +93,12 @@ export function createModuleCompiler(options) {
92
93
  queue.push(dep);
93
94
  }
94
95
  }
96
+ layers.push(layer);
95
97
  }
96
- return urls;
98
+ return layers;
97
99
  },
98
100
  async getHref(filePath) {
99
- let resolvedModule = resolveServedModuleOrThrow(resolveInputFilePath(filePath));
101
+ let resolvedModule = resolveServedScriptOrThrow(resolveInputFilePath(filePath));
100
102
  return getServedUrl(resolvedModule.identityPath);
101
103
  },
102
104
  async handleFileEvent(filePath, event) {
@@ -108,21 +110,21 @@ export function createModuleCompiler(options) {
108
110
  }
109
111
  if (isTsconfigPath(normalizedFilePath)) {
110
112
  tsconfigTransformOptionsResolver.clear();
111
- store.invalidateAll();
113
+ scriptStore.invalidateAll();
112
114
  return;
113
115
  }
114
116
  if (isPackageJsonPath(normalizedFilePath)) {
115
- store.invalidateAll();
117
+ scriptStore.invalidateAll();
116
118
  return;
117
119
  }
118
- store.invalidateForFileEvent(normalizedFilePath, event);
120
+ scriptStore.invalidateForFileEvent(normalizedFilePath, event);
119
121
  },
120
122
  parseRequestPathname(pathname) {
121
123
  let parsedPathname = parseServedPathname(pathname);
122
124
  let filePath = resolvedOptions.routes.resolveUrlPathname(parsedPathname.stablePathname);
123
125
  if (!filePath)
124
126
  return null;
125
- if (resolvedOptions.fingerprintModules && parsedPathname.requestedFingerprint === null)
127
+ if (resolvedOptions.fingerprintAssets && parsedPathname.requestedFingerprint === null)
126
128
  return null;
127
129
  return {
128
130
  cacheControl: getFingerprintRequestCacheControl(parsedPathname.requestedFingerprint),
@@ -141,21 +143,21 @@ export function createModuleCompiler(options) {
141
143
  }
142
144
  return resolveFilePath(resolvedOptions.rootDir, filePath);
143
145
  }
144
- function resolveServedModuleOrThrow(absolutePath) {
146
+ function resolveServedScriptOrThrow(absolutePath) {
145
147
  let resolvedModule = resolveModulePath(absolutePath);
146
148
  if (!resolvedModule) {
147
- throw createAssetServerCompilationError(`Module not found: ${absolutePath}`, {
148
- code: 'MODULE_NOT_FOUND',
149
+ throw createAssetServerCompilationError(`File not found: ${absolutePath}`, {
150
+ code: 'FILE_NOT_FOUND',
149
151
  });
150
152
  }
151
153
  if (!resolvedOptions.isAllowed(resolvedModule.identityPath)) {
152
- throw createAssetServerCompilationError(`Module is not allowed: ${resolvedModule.identityPath}`, {
153
- code: 'MODULE_NOT_ALLOWED',
154
+ throw createAssetServerCompilationError(`File is not allowed: ${resolvedModule.identityPath}`, {
155
+ code: 'FILE_NOT_ALLOWED',
154
156
  });
155
157
  }
156
158
  return resolvedModule;
157
159
  }
158
- function getNotModifiedModule(record, options) {
160
+ function getNotModifiedScript(record, options) {
159
161
  let current = getNotModifiedResult(record.emitted, options);
160
162
  if (current)
161
163
  return current;
@@ -164,10 +166,10 @@ export function createModuleCompiler(options) {
164
166
  }
165
167
  return getNotModifiedResult(record.staleEmitted, options);
166
168
  }
167
- async function getOrCreateResolvedModules(records) {
168
- return mapWithConcurrency(records, preloadConcurrency, (record) => getOrCreateResolvedModule(record));
169
+ async function getOrCreateResolvedScripts(records) {
170
+ return mapWithConcurrency(records, preloadConcurrency, (record) => getOrCreateResolvedScript(record));
169
171
  }
170
- async function getOrCreateResolvedModule(record) {
172
+ async function getOrCreateResolvedScript(record) {
171
173
  if (record.resolved)
172
174
  return record.resolved;
173
175
  let cacheKey = getRecordCacheKey(record);
@@ -176,7 +178,7 @@ export function createModuleCompiler(options) {
176
178
  return existing;
177
179
  let promise = (async () => {
178
180
  let startedVersion = record.invalidationVersion;
179
- let transformedModule = await getOrCreateTransformedModule(record);
181
+ let transformedModule = await getOrCreateTransformedScript(record);
180
182
  if (resolvedOptions.watchMode &&
181
183
  transformedModule.unresolvedImports.some((unresolved) => isBareImportSpecifier(unresolved.specifier))) {
182
184
  resolverFactory.clearCache();
@@ -184,12 +186,14 @@ export function createModuleCompiler(options) {
184
186
  let resolveModuleResult = await resolveModule(record, transformedModule, resolveArgs);
185
187
  if (!resolveModuleResult.ok) {
186
188
  if (isFresh(record, startedVersion)) {
187
- store.setResolveFailure(record.identityPath, resolveModuleResult.tracking);
189
+ scriptStore.clearResolved(record.identityPath, [resolveModuleResult.tracking]);
188
190
  }
189
191
  throw resolveModuleResult.error;
190
192
  }
191
193
  if (isFresh(record, startedVersion)) {
192
- store.setResolved(record.identityPath, resolveModuleResult.value);
194
+ scriptStore.setResolved(record.identityPath, resolveModuleResult.value, [
195
+ resolveModuleResult.tracking,
196
+ ]);
193
197
  }
194
198
  return resolveModuleResult.value;
195
199
  })();
@@ -203,25 +207,25 @@ export function createModuleCompiler(options) {
203
207
  }
204
208
  }
205
209
  }
206
- async function getOrCreateTransformedModule(record) {
210
+ async function getOrCreateTransformedScript(record) {
207
211
  if (record.transformed)
208
212
  return record.transformed;
209
213
  let startedVersion = record.invalidationVersion;
210
214
  let transformModuleResult = await transformModule(record, transformArgs);
211
215
  if (!transformModuleResult.ok) {
212
216
  if (isFresh(record, startedVersion)) {
213
- store.setTransformFailure(record.identityPath, {
214
- trackedFiles: transformModuleResult.trackedFiles,
215
- });
217
+ scriptStore.clearTransformed(record.identityPath, [transformModuleResult.tracking]);
216
218
  }
217
219
  throw transformModuleResult.error;
218
220
  }
219
221
  if (isFresh(record, startedVersion)) {
220
- store.setTransformed(record.identityPath, transformModuleResult.value);
222
+ scriptStore.setTransformed(record.identityPath, transformModuleResult.value, [
223
+ transformModuleResult.tracking,
224
+ ]);
221
225
  }
222
226
  return transformModuleResult.value;
223
227
  }
224
- async function getOrCreateEmittedModule(record) {
228
+ async function getOrCreateEmittedScript(record) {
225
229
  if (record.emitted)
226
230
  return record.emitted;
227
231
  let cacheKey = getRecordCacheKey(record);
@@ -230,7 +234,7 @@ export function createModuleCompiler(options) {
230
234
  return existing;
231
235
  let promise = (async () => {
232
236
  let startedVersion = record.invalidationVersion;
233
- let resolvedModule = await getOrCreateResolvedModule(record);
237
+ let resolvedModule = await getOrCreateResolvedScript(record);
234
238
  let emitResolvedModuleResult = await emitResolvedModule(resolvedModule, {
235
239
  getServedUrl,
236
240
  sourceMaps: resolvedOptions.sourceMaps,
@@ -239,7 +243,7 @@ export function createModuleCompiler(options) {
239
243
  throw emitResolvedModuleResult.error;
240
244
  }
241
245
  if (isFresh(record, startedVersion)) {
242
- store.setEmitted(record.identityPath, emitResolvedModuleResult.value, createModuleSnapshot(resolvedModule.trackedFiles));
246
+ scriptStore.setEmitted(record.identityPath, emitResolvedModuleResult.value, createModuleSnapshot(resolvedModule.trackedFiles));
243
247
  }
244
248
  return emitResolvedModuleResult.value;
245
249
  })();
@@ -254,10 +258,10 @@ export function createModuleCompiler(options) {
254
258
  }
255
259
  }
256
260
  async function getServedUrl(identityPath) {
257
- return getServedUrlForResolvedModule(await getOrCreateResolvedModule(store.get(identityPath)));
261
+ return getServedUrlForResolvedScript(await getOrCreateResolvedScript(scriptStore.get(identityPath)));
258
262
  }
259
- function getServedUrlForResolvedModule(resolvedModule) {
260
- return formatFingerprintedPathname(resolvedModule.stableUrlPathname, resolvedOptions.fingerprintModules ? resolvedModule.fingerprint : null);
263
+ function getServedUrlForResolvedScript(resolvedModule) {
264
+ return formatFingerprintedPathname(resolvedModule.stableUrlPathname, resolvedOptions.fingerprintAssets ? resolvedModule.fingerprint : null);
261
265
  }
262
266
  function isWatchIgnored(filePath) {
263
267
  return resolvedOptions.watchIgnoreMatchers.some((matcher) => matcher(filePath));
@@ -346,7 +350,7 @@ async function mapWithConcurrency(items, concurrency, mapper) {
346
350
  await Promise.all(Array.from({ length: Math.min(concurrency, items.length) }, () => worker()));
347
351
  return results;
348
352
  }
349
- function toModuleCompileResult(emittedModule) {
353
+ function toScriptCompileResult(emittedModule) {
350
354
  return {
351
355
  code: emittedModule.code,
352
356
  fingerprint: emittedModule.fingerprint,
@@ -405,7 +409,7 @@ function isNoEntityError(error) {
405
409
  (error.code === 'ENOENT' ||
406
410
  error.code === 'ENOTDIR'));
407
411
  }
408
- export function createResponseForModule(result, options) {
412
+ export function createResponseForScript(result, options) {
409
413
  let body;
410
414
  let etag;
411
415
  let contentType;
@@ -56,8 +56,8 @@ async function createEmittedAsset(content) {
56
56
  function toEmitError(error, identityPath) {
57
57
  if (isAssetServerCompilationError(error))
58
58
  return error;
59
- return createAssetServerCompilationError(`Failed to emit module ${identityPath}. ${error instanceof Error ? error.message : String(error)}`, {
59
+ return createAssetServerCompilationError(`Failed to emit script ${identityPath}. ${error instanceof Error ? error.message : String(error)}`, {
60
60
  cause: error,
61
- code: 'MODULE_EMIT_FAILED',
61
+ code: 'EMIT_FAILED',
62
62
  });
63
63
  }