@athree/module-loader 4.0.0-wip.1 → 4.0.0-wip.3

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.
@@ -1,38 +1,24 @@
1
- import { readFile, stat } from 'node:fs/promises';
1
+ import { readFile } from 'node:fs/promises';
2
2
  import { fileURLToPath } from 'node:url';
3
3
  export async function resolve(specifier, context, nextResolve) {
4
- // Allow specifying ?t=timestamp directly in await import()
5
- // to force cache busting
6
- let ts = 0;
7
- if (specifier.includes('?t=')) {
8
- const [_spec, _ts] = specifier.split('?t=');
9
- specifier = _spec;
10
- ts = Number(_ts) || 0;
11
- }
12
- // Resolve the module as usual,
13
- // this results either in file:// or custom specifiers like `node:`
14
- const resolved = await nextResolve(specifier, context);
4
+ const resolved = await nextResolve(stripQuery(specifier), context);
5
+ // Non-file URLs (e.g. `node:`) are always resolved as is
15
6
  if (!resolved.url.startsWith('file://')) {
16
7
  return resolved;
17
8
  }
18
- // For file modules, if ts is provided explicitly in resolve request,
19
- // then use that, otherwise use the file's mtime
20
- const file = fileURLToPath(resolved.url);
21
- if (ts > 0) {
9
+ // Propagate cache param from parent to transitive deps
10
+ const t = extractCacheParam(specifier) || (context.parentURL ? extractCacheParam(context.parentURL) : '');
11
+ if (t) {
22
12
  return {
23
13
  format: resolved.format,
24
- url: resolved.url + `?t=${ts}`,
14
+ url: resolved.url + `?t=${t}`,
25
15
  };
26
16
  }
27
- const { mtime } = await stat(file);
28
- return {
29
- format: resolved.format,
30
- url: resolved.url + `?t=${mtime.getTime()}`,
31
- };
17
+ return resolved;
32
18
  }
33
19
  export async function load(specifier, context, nextLoad) {
34
20
  if (/\.md($|\?)/.test(specifier)) {
35
- const file = fileURLToPath(specifier);
21
+ const file = fileURLToPath(stripQuery(specifier));
36
22
  const source = await readFile(file, 'utf-8');
37
23
  return {
38
24
  format: 'module',
@@ -42,4 +28,11 @@ export async function load(specifier, context, nextLoad) {
42
28
  }
43
29
  return nextLoad(specifier, context);
44
30
  }
31
+ function extractCacheParam(specifier) {
32
+ const searchParams = new URLSearchParams(specifier.split('?')[1]);
33
+ return searchParams.get('t') ?? '';
34
+ }
35
+ function stripQuery(specifier) {
36
+ return specifier.split('?')[0];
37
+ }
45
38
  //# sourceMappingURL=module-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module-loader.js","sourceRoot":"","sources":["../../src/main/module-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKzC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,SAAiB,EAAE,OAA2B,EAAE,WAAwB;IAClG,2DAA2D;IAC3D,yBAAyB;IACzB,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,SAAS,GAAG,KAAK,CAAC;QAClB,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,+BAA+B;IAC/B,mEAAmE;IACnE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,qEAAqE;IACrE,gDAAgD;IAChD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACT,OAAO;YACH,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,MAAM,EAAE,EAAE;SACjC,CAAC;IACN,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO;QACH,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE;KAC9C,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,SAAiB,EAAE,OAAwB,EAAE,QAAkB;IACtF,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO;YACH,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,kBAAkB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;SACrD,CAAC;IACN,CAAC;IACD,OAAO,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"module-loader.js","sourceRoot":"","sources":["../../src/main/module-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKzC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,SAAiB,EAAE,OAA2B,EAAE,WAAwB;IAClG,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IACnE,yDAAyD;IACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,uDAAuD;IACvD,MAAM,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1G,IAAI,CAAC,EAAE,CAAC;QACJ,OAAO;YACH,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;SAChC,CAAC;IACN,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,SAAiB,EAAE,OAAwB,EAAE,QAAkB;IACtF,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO;YACH,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,kBAAkB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;SACrD,CAAC;IACN,CAAC;IACD,OAAO,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB;IACxC,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB;IACjC,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@athree/module-loader",
3
- "version": "4.0.0-wip.1",
3
+ "version": "4.0.0-wip.3",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./out/main/index.js",