veryfront 0.1.795 → 0.1.797

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/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.795",
3
+ "version": "0.1.797",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "minimumDependencyAge": {
@@ -113,7 +113,7 @@ export declare function getAgentRuntimeToolCallPart(part: unknown): {
113
113
  input: Record<string, unknown>;
114
114
  } | null;
115
115
  /** Return a runtime tool-result part when the value carries a tool result. */
116
- export declare function getAgentRuntimeToolResultPart(part: unknown): {
116
+ export declare function getAgentRuntimeToolResultPart(part: unknown, toolNameFallback?: string): {
117
117
  toolCallId: string;
118
118
  toolName: string;
119
119
  output: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"message-adapter.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/message-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-adapter.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/message-adapter.ts"],"names":[],"mappings":"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"}
@@ -196,14 +196,15 @@ export function getAgentRuntimeToolCallPart(part) {
196
196
  };
197
197
  }
198
198
  /** Return a runtime tool-result part when the value carries a tool result. */
199
- export function getAgentRuntimeToolResultPart(part) {
199
+ export function getAgentRuntimeToolResultPart(part, toolNameFallback) {
200
200
  if (!isRecord(part) || part.type !== "tool-result" && part.type !== "tool_result") {
201
201
  return null;
202
202
  }
203
203
  const toolCallId = getOptionalStringField(part, "toolCallId") ??
204
204
  getOptionalStringField(part, "tool_call_id");
205
205
  const toolName = getOptionalStringField(part, "toolName") ??
206
- getOptionalStringField(part, "tool_name");
206
+ getOptionalStringField(part, "tool_name") ??
207
+ toolNameFallback;
207
208
  if (!toolCallId || !toolName) {
208
209
  return null;
209
210
  }
@@ -217,6 +218,13 @@ export function getAgentRuntimeToolResultPart(part) {
217
218
  : null,
218
219
  };
219
220
  }
221
+ function getAgentRuntimeToolResultCallId(part) {
222
+ if (!isRecord(part) || part.type !== "tool-result" && part.type !== "tool_result") {
223
+ return undefined;
224
+ }
225
+ return getOptionalStringField(part, "toolCallId") ??
226
+ getOptionalStringField(part, "tool_call_id");
227
+ }
220
228
  /** Create a chat tool-result part. */
221
229
  export function createToolResultPart(part) {
222
230
  return {
@@ -235,6 +243,7 @@ function collectAgentRuntimeProviderContentParts(parts) {
235
243
  const toolCallParts = [];
236
244
  const toolResultParts = [];
237
245
  const fileParts = [];
246
+ const toolNamesById = new Map();
238
247
  for (const part of parts) {
239
248
  const textPart = getAgentRuntimeTextPart(part);
240
249
  if (textPart) {
@@ -253,13 +262,15 @@ function collectAgentRuntimeProviderContentParts(parts) {
253
262
  continue;
254
263
  }
255
264
  }
256
- const toolResultPart = getAgentRuntimeToolResultPart(part);
265
+ const toolResultCallId = getAgentRuntimeToolResultCallId(part);
266
+ const toolResultPart = getAgentRuntimeToolResultPart(part, toolResultCallId ? toolNamesById.get(toolResultCallId) : undefined);
257
267
  if (toolResultPart) {
258
268
  toolResultParts.push(createToolResultPart(toolResultPart));
259
269
  continue;
260
270
  }
261
271
  const toolCallPart = getAgentRuntimeToolCallPart(part);
262
272
  if (toolCallPart) {
273
+ toolNamesById.set(toolCallPart.toolCallId, toolCallPart.toolName);
263
274
  toolCallParts.push({
264
275
  type: "tool-call",
265
276
  toolCallId: toolCallPart.toolCallId,
@@ -270,49 +281,124 @@ function collectAgentRuntimeProviderContentParts(parts) {
270
281
  }
271
282
  return { textParts, reasoningParts, toolCallParts, toolResultParts, fileParts };
272
283
  }
273
- function createProviderMessageFromAgentRuntimeMessage(message) {
274
- const { textParts, reasoningParts, toolCallParts, toolResultParts, fileParts } = collectAgentRuntimeProviderContentParts(message.parts);
275
- switch (message.role) {
276
- case "assistant":
277
- if (reasoningParts.length === 0 && textParts.length === 0 && toolCallParts.length === 0) {
278
- return null;
284
+ function convertAssistantAgentRuntimePartsToProviderMessages(parts) {
285
+ const assistantContent = [];
286
+ const deferredAssistantContent = [];
287
+ const toolResults = [];
288
+ const pendingToolCallIds = new Set();
289
+ const toolNamesById = new Map();
290
+ const providerMessages = [];
291
+ const flushAssistantMessage = (content) => {
292
+ if (content.length === 0) {
293
+ return;
294
+ }
295
+ providerMessages.push({ role: "assistant", content: [...content] });
296
+ content.length = 0;
297
+ };
298
+ const flushToolMessage = () => {
299
+ if (toolResults.length === 0) {
300
+ return;
301
+ }
302
+ providerMessages.push({ role: "tool", content: [...toolResults] });
303
+ toolResults.length = 0;
304
+ };
305
+ const pushAssistantPart = (part) => {
306
+ if (part.type === "tool-call") {
307
+ if (deferredAssistantContent.length > 0) {
308
+ flushAssistantMessage(assistantContent);
309
+ flushToolMessage();
310
+ flushAssistantMessage(deferredAssistantContent);
279
311
  }
280
- return {
281
- role: "assistant",
282
- content: [...reasoningParts, ...textParts, ...toolCallParts],
283
- };
312
+ assistantContent.push(part);
313
+ pendingToolCallIds.add(part.toolCallId);
314
+ toolNamesById.set(part.toolCallId, part.toolName);
315
+ return;
316
+ }
317
+ if (pendingToolCallIds.size > 0) {
318
+ deferredAssistantContent.push(part);
319
+ return;
320
+ }
321
+ if (toolResults.length > 0) {
322
+ flushAssistantMessage(assistantContent);
323
+ flushToolMessage();
324
+ flushAssistantMessage(deferredAssistantContent);
325
+ }
326
+ assistantContent.push(part);
327
+ };
328
+ const pushToolResult = (part) => {
329
+ toolResults.push(part);
330
+ pendingToolCallIds.delete(part.toolCallId);
331
+ };
332
+ for (const part of parts) {
333
+ const textPart = getAgentRuntimeTextPart(part);
334
+ if (textPart) {
335
+ pushAssistantPart(textPart);
336
+ continue;
337
+ }
338
+ const reasoningPart = getAgentRuntimeReasoningPart(part);
339
+ if (reasoningPart) {
340
+ pushAssistantPart(reasoningPart);
341
+ continue;
342
+ }
343
+ const toolResultCallId = getAgentRuntimeToolResultCallId(part);
344
+ const toolResultPart = getAgentRuntimeToolResultPart(part, toolResultCallId ? toolNamesById.get(toolResultCallId) : undefined);
345
+ if (toolResultPart) {
346
+ pushToolResult(createToolResultPart(toolResultPart));
347
+ continue;
348
+ }
349
+ const toolCallPart = getAgentRuntimeToolCallPart(part);
350
+ if (toolCallPart) {
351
+ pushAssistantPart({
352
+ type: "tool-call",
353
+ toolCallId: toolCallPart.toolCallId,
354
+ toolName: toolCallPart.toolName,
355
+ input: toolCallPart.input,
356
+ });
357
+ }
358
+ }
359
+ flushAssistantMessage(assistantContent);
360
+ flushToolMessage();
361
+ flushAssistantMessage(deferredAssistantContent);
362
+ return providerMessages;
363
+ }
364
+ function createProviderMessagesFromAgentRuntimeMessage(message) {
365
+ if (message.role === "assistant") {
366
+ return convertAssistantAgentRuntimePartsToProviderMessages(message.parts);
367
+ }
368
+ const { textParts, toolResultParts, fileParts } = collectAgentRuntimeProviderContentParts(message.parts);
369
+ switch (message.role) {
284
370
  case "tool":
285
371
  if (toolResultParts.length === 0) {
286
- return null;
372
+ return [];
287
373
  }
288
- return {
289
- role: "tool",
290
- content: toolResultParts,
291
- };
374
+ return [{
375
+ role: "tool",
376
+ content: toolResultParts,
377
+ }];
292
378
  case "user": {
293
379
  if (textParts.length === 0 && fileParts.length === 0) {
294
- return null;
380
+ return [];
295
381
  }
296
382
  if (fileParts.length === 0) {
297
- return {
298
- role: "user",
299
- content: joinTextParts(textParts),
300
- };
383
+ return [{
384
+ role: "user",
385
+ content: joinTextParts(textParts),
386
+ }];
301
387
  }
302
388
  const content = [...textParts, ...fileParts];
303
- return {
304
- role: "user",
305
- content,
306
- };
389
+ return [{
390
+ role: "user",
391
+ content,
392
+ }];
307
393
  }
308
394
  case "system": {
309
395
  if (textParts.length === 0) {
310
- return null;
396
+ return [];
311
397
  }
312
- return {
313
- role: "system",
314
- content: joinTextParts(textParts),
315
- };
398
+ return [{
399
+ role: "system",
400
+ content: joinTextParts(textParts),
401
+ }];
316
402
  }
317
403
  default: {
318
404
  const exhaustiveCheck = message.role;
@@ -333,10 +419,7 @@ export function convertProviderMessagesToAgentRuntimeMessages(messages) {
333
419
  export function convertAgentRuntimeMessagesToProviderMessages(messages) {
334
420
  const converted = [];
335
421
  for (const message of messages) {
336
- const convertedMessage = createProviderMessageFromAgentRuntimeMessage(message);
337
- if (convertedMessage) {
338
- converted.push(convertedMessage);
339
- }
422
+ converted.push(...createProviderMessagesFromAgentRuntimeMessage(message));
340
423
  }
341
424
  return converted;
342
425
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/src/html/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAcjF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAQR;AAaD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AA4DD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGrD,CAAC;AA6JF,UAAU,qBAAqB;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACpD;AA2CD,wBAAsB,cAAc,CAClC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvD,OAAO,CAAC,cAAc,CAAC,CA8DzB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvD,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAElF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/src/html/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAcjF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAQR;AAaD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AA4DD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGrD,CAAC;AA6JF,UAAU,qBAAqB;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACpD;AA+ED,wBAAsB,cAAc,CAClC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvD,OAAO,CAAC,cAAc,CAAC,CA8DzB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvD,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAElF"}
@@ -1,5 +1,6 @@
1
1
  import { escapeHTML } from "./html-escape.js";
2
2
  import { LRUCache } from "../utils/lru-wrapper.js";
3
+ import { releaseAssetUrl } from "../release-assets/constants.js";
3
4
  import { VERYFRONT_VERSION } from "../utils/constants/cdn.js";
4
5
  import { DEFAULT_REACT_VERSION, esmShReact, readProjectDependencyVersions, resolveProjectReactVersion, stripSemverRange, } from "../transforms/esm/package-registry.js";
5
6
  function joinAttributes(attrs) {
@@ -196,11 +197,40 @@ function stableManifestDependencyKey(manifest) {
196
197
  })
197
198
  : "";
198
199
  }
199
- function applyManifestDependencies(imports, _manifest) {
200
- // Framework dependency assets are recorded for future S7 vendoring, but they
201
- // are not browser-safe until their own relative import closures are rewritten
202
- // and uploaded. Keep import-map entries on their existing module URLs.
203
- return imports;
200
+ function canonicalDependencyUrl(value) {
201
+ try {
202
+ const url = new URL(value);
203
+ if (url.protocol !== "http:" && url.protocol !== "https:")
204
+ return value;
205
+ const sortedParams = [...url.searchParams.entries()].sort(([leftKey, leftValue], [rightKey, rightValue,]) => leftKey.localeCompare(rightKey) || leftValue.localeCompare(rightValue));
206
+ url.search = "";
207
+ for (const [key, paramValue] of sortedParams) {
208
+ url.searchParams.append(key, paramValue);
209
+ }
210
+ return url.toString();
211
+ }
212
+ catch {
213
+ return value;
214
+ }
215
+ }
216
+ function applyManifestDependencies(imports, manifest) {
217
+ if (!manifest)
218
+ return imports;
219
+ const dependencyAssets = new Map();
220
+ for (const [specifier, entry] of Object.entries(manifest.dependencies)) {
221
+ const assetUrl = releaseAssetUrl(entry.contentHash, "js");
222
+ dependencyAssets.set(specifier, assetUrl);
223
+ dependencyAssets.set(canonicalDependencyUrl(specifier), assetUrl);
224
+ }
225
+ return Object.fromEntries(Object.entries(imports).map(([specifier, url]) => {
226
+ if (!url.startsWith("http://") && !url.startsWith("https://")) {
227
+ return [specifier, url];
228
+ }
229
+ return [
230
+ specifier,
231
+ dependencyAssets.get(url) ?? dependencyAssets.get(canonicalDependencyUrl(url)) ?? url,
232
+ ];
233
+ }));
204
234
  }
205
235
  function isImportMapOnlyOptions(options) {
206
236
  return !("projectDir" in options) &&
@@ -1 +1 @@
1
- {"version":3,"file":"build-executor.d.ts","sourceRoot":"","sources":["../../../src/src/release-assets/build-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-executor.d.ts","sourceRoot":"","sources":["../../../src/src/release-assets/build-executor.ts"],"names":[],"mappings":"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"}
@@ -222,6 +222,26 @@ function buildDependencyUrlMap(dependencies, dependencyModules) {
222
222
  }
223
223
  return urls;
224
224
  }
225
+ function dependencyFallbackUrl(dependency) {
226
+ if (dependency.manifestKey.startsWith("http://") ||
227
+ dependency.manifestKey.startsWith("https://")) {
228
+ return dependency.manifestKey;
229
+ }
230
+ for (const specifier of dependency.specifiers) {
231
+ if (specifier.startsWith("http://") || specifier.startsWith("https://")) {
232
+ return specifier;
233
+ }
234
+ }
235
+ return null;
236
+ }
237
+ function addDependencyUrlAliases(urls, dependency, url) {
238
+ urls.set(dependency.manifestKey, url);
239
+ if (dependency.sourcePath)
240
+ urls.set(`file://${dependency.sourcePath}`, url);
241
+ for (const specifier of dependency.specifiers) {
242
+ urls.set(normalizeDependencySpecifier(specifier), url);
243
+ }
244
+ }
225
245
  function addDependencyModule(dependencies, dependency) {
226
246
  const sourcePath = dependency.sourcePath ?? resolveLocalDependencyPath(dependency.specifier) ??
227
247
  undefined;
@@ -329,7 +349,7 @@ async function vendorHttpImportsWithCache(code, options) {
329
349
  }))),
330
350
  };
331
351
  }
332
- async function finalizeDependencyModules(dependencyModules, uploadQueue, pendingBytes) {
352
+ async function finalizeDependencyModules(dependencyModules, uploadQueue, pendingBytes, gaps) {
333
353
  const bySpecifier = new Map();
334
354
  const byFilePath = new Map();
335
355
  for (const dependency of dependencyModules.values()) {
@@ -343,6 +363,9 @@ async function finalizeDependencyModules(dependencyModules, uploadQueue, pending
343
363
  byFilePath.set(dependency.sourcePath, dependency);
344
364
  }
345
365
  const finalized = new Map();
366
+ const fallbackUrls = new Map();
367
+ const skippedCycles = new Set();
368
+ const recordedCycleGaps = new Set();
346
369
  const visiting = [];
347
370
  function resolveDependencyImport(specifier, parent) {
348
371
  const filePath = resolveLocalDependencyPath(specifier, parent.sourcePath);
@@ -353,14 +376,32 @@ async function finalizeDependencyModules(dependencyModules, uploadQueue, pending
353
376
  }
354
377
  return bySpecifier.get(normalizeDependencySpecifier(specifier)) ?? null;
355
378
  }
379
+ function recordDependencyCycle(cycleKeys) {
380
+ // Separate content-hashed ESM files cannot represent cyclic imports without
381
+ // release-scoped aliases or bundling, so keep only that component on source URL fallback.
382
+ for (const key of cycleKeys)
383
+ skippedCycles.add(key);
384
+ const gap = `dependency-cycle:${cycleKeys.join("->")}`;
385
+ if (!recordedCycleGaps.has(gap)) {
386
+ recordedCycleGaps.add(gap);
387
+ gaps.push(gap);
388
+ }
389
+ }
390
+ function cycleFallbackFor(dependency) {
391
+ if (!skippedCycles.has(dependency.manifestKey))
392
+ return null;
393
+ return dependencyFallbackUrl(dependency);
394
+ }
356
395
  async function finalize(manifestKey) {
357
396
  const existing = finalized.get(manifestKey);
358
397
  if (existing)
359
398
  return existing;
360
399
  if (visiting.includes(manifestKey)) {
361
- const cycle = [...visiting.slice(visiting.indexOf(manifestKey)), manifestKey].join(" -> ");
362
- throw new Error(`Circular release asset dependency graph: ${cycle}`);
400
+ recordDependencyCycle([...visiting.slice(visiting.indexOf(manifestKey)), manifestKey]);
401
+ return null;
363
402
  }
403
+ if (skippedCycles.has(manifestKey))
404
+ return null;
364
405
  const dependency = dependencyModules.get(manifestKey);
365
406
  if (!dependency)
366
407
  return null;
@@ -378,16 +419,21 @@ async function finalizeDependencyModules(dependencyModules, uploadQueue, pending
378
419
  if (!child)
379
420
  continue;
380
421
  if (child.manifestKey === manifestKey) {
381
- throw new Error(`Circular release asset dependency graph: ${manifestKey} -> ${manifestKey}`);
422
+ recordDependencyCycle([manifestKey, manifestKey]);
423
+ continue;
382
424
  }
383
425
  await finalize(child.manifestKey);
384
426
  }
427
+ if (skippedCycles.has(manifestKey))
428
+ return null;
385
429
  const rewritten = await replaceSpecifiers(dependency.code, (specifier) => {
386
430
  const child = resolveDependencyImport(specifier, dependency);
387
431
  if (!child)
388
432
  return null;
389
433
  const asset = finalized.get(child.manifestKey);
390
- return asset ? releaseAssetUrl(asset.contentHash, "js") : null;
434
+ if (asset)
435
+ return releaseAssetUrl(asset.contentHash, "js");
436
+ return cycleFallbackFor(child);
391
437
  });
392
438
  const entry = await addPreparedJavaScriptAsset(`__dependencies__/${manifestKey}`, rewritten, uploadQueue, pendingBytes);
393
439
  if (!entry) {
@@ -410,7 +456,17 @@ async function finalizeDependencyModules(dependencyModules, uploadQueue, pending
410
456
  finally {
411
457
  visiting.length = 0;
412
458
  }
413
- return Object.fromEntries(finalized);
459
+ for (const manifestKey of skippedCycles) {
460
+ const dependency = dependencyModules.get(manifestKey);
461
+ if (!dependency)
462
+ continue;
463
+ const fallbackUrl = dependencyFallbackUrl(dependency);
464
+ if (!fallbackUrl) {
465
+ throw new Error(`Unrepresentable vendored dependency cycle: ${manifestKey}`);
466
+ }
467
+ addDependencyUrlAliases(fallbackUrls, dependency, fallbackUrl);
468
+ }
469
+ return { assets: Object.fromEntries(finalized), fallbackUrls };
414
470
  }
415
471
  async function finalizeProjectModules(transformedModules, knownPaths, dependencyUrls, uploadQueue, pendingBytes, gaps) {
416
472
  const finalized = new Map();
@@ -721,8 +777,11 @@ async function runBuildInner(input, tempDir, client, transform) {
721
777
  }
722
778
  const frameworkDependencies = await buildFrameworkDependencies(input, tempDir, transform, uploadQueue, pendingBytes, gaps);
723
779
  let httpDependencies;
780
+ let httpDependencyFallbackUrls;
724
781
  try {
725
- httpDependencies = await finalizeDependencyModules(dependencyModules, uploadQueue, pendingBytes);
782
+ const finalizedHttpDependencies = await finalizeDependencyModules(dependencyModules, uploadQueue, pendingBytes, gaps);
783
+ httpDependencies = finalizedHttpDependencies.assets;
784
+ httpDependencyFallbackUrls = finalizedHttpDependencies.fallbackUrls;
726
785
  }
727
786
  catch (error) {
728
787
  const sanitized = sanitizeError(error);
@@ -742,6 +801,9 @@ async function runBuildInner(input, tempDir, client, transform) {
742
801
  }
743
802
  const dependencies = { ...frameworkDependencies, ...httpDependencies };
744
803
  const dependencyUrls = buildDependencyUrlMap(dependencies, dependencyModules);
804
+ for (const [specifier, url] of httpDependencyFallbackUrls) {
805
+ dependencyUrls.set(specifier, url);
806
+ }
745
807
  const { modules, skippedModules } = await finalizeProjectModules(transformedModules, knownPaths, dependencyUrls, uploadQueue, pendingBytes, gaps);
746
808
  for (const logicalPath of transformedModules.keys()) {
747
809
  if (modules[logicalPath])
@@ -1,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.795";
2
+ export declare const VERSION = "0.1.797";
3
3
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
3
  /** Shared version value. */
4
- export const VERSION = "0.1.795";
4
+ export const VERSION = "0.1.797";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.795",
3
+ "version": "0.1.797",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",