@utoo/web 1.4.2 → 1.4.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.
@@ -14,10 +14,7 @@ declare class InternalEndpoint implements ProjectEndpoint {
14
14
  config?: ConfigComplete;
15
15
  cleanup?: boolean;
16
16
  }): Promise<any>;
17
- dev(options?: {
18
- config?: ConfigComplete;
19
- onUpdate?: (result: any) => void;
20
- }): Promise<void>;
17
+ dev(config?: ConfigComplete, onUpdate?: (result: any) => void): Promise<void>;
21
18
  readFile(path: string, encoding?: "utf8"): Promise<any>;
22
19
  writeFile(path: string, content: string | Uint8Array, _encoding?: "utf8"): Promise<void>;
23
20
  copyFile(src: string, dst: string): Promise<void>;
@@ -51,15 +51,15 @@ class InternalEndpoint {
51
51
  }
52
52
  return await ProjectInternal.build(buildOptions);
53
53
  }
54
- async dev(options) {
54
+ // @ts-expect-error - Comlink delivers (config, onUpdate) as separate args, not as options object
55
+ async dev(config, onUpdate) {
55
56
  var _a, _b;
56
57
  if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.loaderWorkerUrl) && !this.loaderWorkerPoolInitialized) {
57
58
  runLoaderWorkerPool(this.options.cwd, this.options.loaderWorkerUrl, (_b = this.options) === null || _b === void 0 ? void 0 : _b.loadersImportMap);
58
59
  this.loaderWorkerPoolInitialized = true;
59
60
  }
60
- this.rootTask = await ProjectInternal.entrypointsSubscribe(options === null || options === void 0 ? void 0 : options.config, (result) => {
61
- var _a;
62
- (_a = options === null || options === void 0 ? void 0 : options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, result);
61
+ this.rootTask = await ProjectInternal.entrypointsSubscribe(config, (result) => {
62
+ onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(result);
63
63
  });
64
64
  }
65
65
  async readFile(path, encoding) {
@@ -22,7 +22,7 @@ export declare class Project implements ProjectEndpoint {
22
22
  dev(options?: {
23
23
  config?: ConfigComplete;
24
24
  onUpdate?: (result: BuildOutput) => void;
25
- }): void;
25
+ }): Promise<void>;
26
26
  hmrSubscribe(identifier: string, callback: (update: unknown) => void): Promise<void>;
27
27
  updateInfoSubscribe(aggregationMs: number, callback: (message: UpdateMessage) => void): void;
28
28
  readFile(path: string, encoding?: "utf8"): Promise<any>;
@@ -81,7 +81,8 @@ export class Project {
81
81
  handleIssues(res.issues, false, false);
82
82
  return res;
83
83
  }
84
- dev(options) {
84
+ async dev(options) {
85
+ await __classPrivateFieldGet(this, _Project_mount, "f");
85
86
  // Create HmrServer lazily on first dev() call
86
87
  if (!this.hmrServer) {
87
88
  this.hmrServer = new HmrServer({
@@ -92,15 +93,13 @@ export class Project {
92
93
  },
93
94
  });
94
95
  }
95
- this.remote.dev({
96
- onUpdate: (options === null || options === void 0 ? void 0 : options.onUpdate)
97
- ? comlink.proxy((result) => {
98
- handleIssues(result.issues, false, false);
99
- options.onUpdate(result);
100
- })
101
- : undefined,
102
- config: options === null || options === void 0 ? void 0 : options.config,
103
- });
96
+ // Pass config and onUpdate as separate top-level args for Comlink serialization
97
+ this.remote.dev(options === null || options === void 0 ? void 0 : options.config, (options === null || options === void 0 ? void 0 : options.onUpdate)
98
+ ? comlink.proxy((result) => {
99
+ handleIssues(result.issues, false, false);
100
+ options.onUpdate(result);
101
+ })
102
+ : undefined);
104
103
  }
105
104
  async hmrSubscribe(identifier, callback) {
106
105
  await this.remote.hmrSubscribe(identifier, comlink.proxy(callback));
Binary file
@@ -3,7 +3,6 @@ import nodePolyFills from "./polyfills/nodePolyFills";
3
3
  const fs = nodePolyFills.fs;
4
4
  const path = nodePolyFills.path;
5
5
  const installedModules = {};
6
- const statCache = {};
7
6
  const pkgJsonCache = {};
8
7
  const resolutionCache = {};
9
8
  const searchPathsCache = {};
@@ -35,7 +34,7 @@ const resolveWithExtensions = (p, skipIndexJsIfJs = false) => {
35
34
  }
36
35
  return null;
37
36
  };
38
- const executeModule = (moduleCode, moduleId, id, importMaps, entrypoint) => {
37
+ const executeModule = (moduleId, moduleCode, importMaps, entrypoint) => {
39
38
  if (installedModules[moduleId]) {
40
39
  return installedModules[moduleId].exports;
41
40
  }
@@ -44,9 +43,7 @@ const executeModule = (moduleCode, moduleId, id, importMaps, entrypoint) => {
44
43
  const moduleRequire = (childId) => loadModule(childId, context, importMaps, entrypoint);
45
44
  moduleRequire.resolve = (request) => request;
46
45
  const module = { exports: finalExports, require: moduleRequire };
47
- if (moduleId.includes("node_modules") ||
48
- id in importMaps ||
49
- moduleId in importMaps) {
46
+ if (moduleId.includes("node_modules") || moduleId in importMaps) {
50
47
  installedModules[moduleId] = module;
51
48
  }
52
49
  if (moduleId === entrypoint) {
@@ -69,23 +66,12 @@ const executeModule = (moduleCode, moduleId, id, importMaps, entrypoint) => {
69
66
  console.error(`Worker: Error executing module ${moduleId}:`, e);
70
67
  throw new Error(`Failed to load dependency ${moduleId}: ${e.message}`);
71
68
  }
72
- const originalWarn = console.warn;
73
- console.warn = (...args) => {
74
- var _a;
75
- const msg = ((_a = args[0]) === null || _a === void 0 ? void 0 : _a.toString()) || "";
76
- if (!msg.includes("(SystemJS Error#W3")) {
77
- originalWarn.apply(console, args);
78
- }
79
- };
80
69
  try {
81
70
  System.set(moduleId, { default: finalExports });
82
71
  }
83
72
  catch (_a) {
84
73
  // ignore
85
74
  }
86
- finally {
87
- console.warn = originalWarn;
88
- }
89
75
  return finalExports;
90
76
  };
91
77
  const loadModule = (id, context, importMaps, entrypoint) => {
@@ -95,19 +81,6 @@ const loadModule = (id, context, importMaps, entrypoint) => {
95
81
  const cachedId = resolutionCache[cacheKey];
96
82
  if (installedModules[cachedId])
97
83
  return installedModules[cachedId].exports;
98
- const sysCached = System.get(cachedId) || (id !== cachedId && System.get(id));
99
- if (sysCached)
100
- return sysCached.default;
101
- // importMaps takes priority over cached FS path
102
- const importMapCode = importMaps[cachedId] || importMaps[id];
103
- if (importMapCode) {
104
- const mid = importMaps[cachedId] ? cachedId : id;
105
- return executeModule(importMapCode, mid, id, importMaps, entrypoint);
106
- }
107
- const code = tryReadFile(cachedId);
108
- if (code !== null) {
109
- return executeModule(code, cachedId, id, importMaps, entrypoint);
110
- }
111
84
  }
112
85
  // 1. Resolve
113
86
  let resolvedId = id.startsWith(".") ? path.join(context, id) : id;
@@ -120,30 +93,9 @@ const loadModule = (id, context, importMaps, entrypoint) => {
120
93
  return nodePolyFills[id];
121
94
  if (resolvedId in nodePolyFills)
122
95
  return nodePolyFills[resolvedId];
123
- // 4. Check importMaps & FS
124
- let moduleCode = importMaps[resolvedId] || importMaps[id];
125
- let moduleId = importMaps[resolvedId] ? resolvedId : id;
126
- if (!moduleCode) {
127
- let longestMatch = null;
128
- for (const key in importMaps) {
129
- const sanitized = key.replace(/^\.?\//, "");
130
- if (!sanitized)
131
- continue;
132
- const isMatch = [id, resolvedId].some((p) => p.startsWith("/") &&
133
- p.endsWith(sanitized) &&
134
- p[p.length - sanitized.length - 1] === "/");
135
- if (isMatch && (!longestMatch || key.length > longestMatch.key.length)) {
136
- longestMatch = { key, sanitized };
137
- }
138
- }
139
- if (longestMatch) {
140
- moduleCode = importMaps[longestMatch.key];
141
- moduleId =
142
- id.startsWith("/") && id.endsWith(longestMatch.sanitized)
143
- ? id
144
- : resolvedId;
145
- }
146
- }
96
+ // 4. Check importMaps
97
+ let moduleCode = importMaps[id];
98
+ let moduleId = moduleCode ? id : resolvedId;
147
99
  // Fallback: Try resolving from node_modules
148
100
  if (!moduleCode && !id.startsWith(".") && !id.startsWith("/")) {
149
101
  let searchPaths = searchPathsCache[context];
@@ -185,7 +137,7 @@ const loadModule = (id, context, importMaps, entrypoint) => {
185
137
  const res = resolveWithExtensions(pkgMain);
186
138
  if (res) {
187
139
  moduleCode = res.code;
188
- moduleId = resolvedId = res.id;
140
+ moduleId = res.id;
189
141
  break;
190
142
  }
191
143
  }
@@ -193,7 +145,7 @@ const loadModule = (id, context, importMaps, entrypoint) => {
193
145
  const res = resolveWithExtensions(nodeModulesPath);
194
146
  if (res) {
195
147
  moduleCode = res.code;
196
- moduleId = resolvedId = res.id;
148
+ moduleId = res.id;
197
149
  break;
198
150
  }
199
151
  }
@@ -203,14 +155,14 @@ const loadModule = (id, context, importMaps, entrypoint) => {
203
155
  const res = resolveWithExtensions(resolvedId, id.endsWith(".js"));
204
156
  if (res) {
205
157
  moduleCode = res.code;
206
- moduleId = resolvedId = res.id;
158
+ moduleId = res.id;
207
159
  }
208
160
  }
209
161
  if (moduleCode) {
210
162
  resolutionCache[`${context}:${id}`] = moduleId;
211
- return executeModule(moduleCode, moduleId, id, importMaps, entrypoint);
163
+ return executeModule(moduleId, moduleCode, importMaps, entrypoint);
212
164
  }
213
- const error = new Error(`Worker: Dependency ${id} (resolved: ${resolvedId}) not found. Context: ${context}. ` +
165
+ const error = new Error(`Worker: Dependency ${id} (resolved: ${moduleId}) not found. Context: ${context}. ` +
214
166
  `ImportMaps count: ${Object.keys(importMaps).length}. ` +
215
167
  `CWD: ${nodePolyFills.process.cwd()}. ` +
216
168
  `Sample ImportMaps keys: ${Object.keys(importMaps).slice(0, 5).join(", ")}`);
@@ -218,7 +170,7 @@ const loadModule = (id, context, importMaps, entrypoint) => {
218
170
  throw error;
219
171
  };
220
172
  export async function cjs(entrypoint, importMaps) {
221
- [statCache, pkgJsonCache, resolutionCache, searchPathsCache].forEach((c) => {
173
+ [pkgJsonCache, resolutionCache, searchPathsCache].forEach((c) => {
222
174
  for (const key in c)
223
175
  delete c[key];
224
176
  });
@@ -240,6 +192,15 @@ export async function cjs(entrypoint, importMaps) {
240
192
  }
241
193
  }
242
194
  }));
195
+ // Suppress SystemJS W3 warnings during module loading
196
+ const originalWarn = console.warn;
197
+ console.warn = (...args) => {
198
+ var _a;
199
+ const msg = ((_a = args[0]) === null || _a === void 0 ? void 0 : _a.toString()) || "";
200
+ if (!msg.includes("(SystemJS Error#W3")) {
201
+ originalWarn.apply(console, args);
202
+ }
203
+ };
243
204
  // @ts-ignore
244
205
  self.__systemjs_require__ = (id) => loadModule(id, path.dirname(entrypoint), importMaps, entrypoint);
245
206
  // @ts-ignore
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@utoo/web",
3
- "version": "1.4.2",
3
+ "version": "1.4.3",
4
4
  "module": "esm/index.js",
5
5
  "types": "esm/index.d.ts",
6
6
  "files": [