veryfront 0.1.175 → 0.1.177

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.175",
3
+ "version": "0.1.177",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -28,8 +28,10 @@ export declare class ReadOperations {
28
28
  private setupInFlightFetch;
29
29
  private tryResolveExtensionlessPath;
30
30
  private tryResolveExtensionlessPathFromFileList;
31
+ private finalizeResolvedExtension;
31
32
  private cacheResolvedContent;
32
33
  private storeFetchedContent;
34
+ private fetchPublishedVariant;
33
35
  private fetchContent;
34
36
  private fetchPublishedContent;
35
37
  private tryFallbackExtensions;
@@ -1 +1 @@
1
- {"version":3,"file":"read-operations.d.ts","sourceRoot":"","sources":["../../../../../../src/src/platform/adapters/fs/veryfront/read-operations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAKnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAapE,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAY9B,qBAAa,cAAc;IAWvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAfpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAI9B;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA6B;gBAGnD,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,cAAc,EAC1B,eAAe,CAAC,EAAE,sBAAsB,YAAA,EACxC,kBAAkB,CAAC,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,aAAA,EAC7C,gBAAgB,CAAC,GAAE,MAAM,OAAO,CAC/C,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CACtD,aAAA;IAKH,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIrD,kBAAkB,IAAI,IAAI;IAK1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAY3C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY3C,OAAO,CAAC,mBAAmB;YAsBb,+BAA+B;YA0C/B,mBAAmB;IA0CjC,OAAO,CAAC,kBAAkB;YAoFZ,2BAA2B;YA8D3B,uCAAuC;IAmCrD,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,mBAAmB;YAUb,YAAY;YA6JZ,qBAAqB;YA4DrB,qBAAqB;YA8CrB,+BAA+B;YA4D/B,iBAAiB;CAuBhC"}
1
+ {"version":3,"file":"read-operations.d.ts","sourceRoot":"","sources":["../../../../../../src/src/platform/adapters/fs/veryfront/read-operations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAKnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAapE,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAY9B,qBAAa,cAAc;IAWvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAfpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAI9B;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA6B;gBAGnD,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,cAAc,EAC1B,eAAe,CAAC,EAAE,sBAAsB,YAAA,EACxC,kBAAkB,CAAC,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,aAAA,EAC7C,gBAAgB,CAAC,GAAE,MAAM,OAAO,CAC/C,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CACtD,aAAA;IAKH,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIrD,kBAAkB,IAAI,IAAI;IAK1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAY3C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY3C,OAAO,CAAC,mBAAmB;YAsBb,+BAA+B;YA0C/B,mBAAmB;IA0CjC,OAAO,CAAC,kBAAkB;YAoFZ,2BAA2B;YAmD3B,uCAAuC;IAiCrD,OAAO,CAAC,yBAAyB;IAmCjC,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,qBAAqB;YAYf,YAAY;YA6JZ,qBAAqB;YAwDrB,qBAAqB;YA8CrB,+BAA+B;YAwD/B,iBAAiB;CAuBhC"}
@@ -219,17 +219,15 @@ export class ReadOperations {
219
219
  if (!resolved)
220
220
  return null;
221
221
  const resolvedPath = this.normalizer.normalize(resolved.path);
222
- const resolvedCacheKey = getResolvedCacheKey(cacheKeyPrefix, resolvedPath);
223
- // Cache the path mapping to avoid future API resolution calls
224
- this.extensionResolutionCache.set(apiPath, resolvedPath);
225
- logger.debug("Resolved extension for base path", {
226
- basePath: apiPath,
222
+ return this.finalizeResolvedExtension({
223
+ requestedPath: apiPath,
227
224
  resolvedPath,
225
+ cacheKeyPrefix,
228
226
  cacheKey,
229
- resolvedCacheKey: resolvedCacheKey === cacheKey ? undefined : resolvedCacheKey,
227
+ content: resolved.content,
228
+ persistToCache: isProduction && !skipPersistentCaches,
229
+ logMessage: "Resolved extension for base path",
230
230
  });
231
- this.cacheResolvedContent(cacheKey, resolvedCacheKey, resolved.content, isProduction && !skipPersistentCaches);
232
- return resolved.content;
233
231
  }
234
232
  catch (error) {
235
233
  logger.debug("resolveFileWithExtension failed", {
@@ -244,8 +242,6 @@ export class ReadOperations {
244
242
  const resolved = await this.fileListIndex.findFirstMatch(candidatePaths);
245
243
  if (resolved.status !== "hit" || !resolved.path || !resolved.content)
246
244
  return resolved;
247
- const resolvedCacheKey = getResolvedCacheKey(cacheKeyPrefix, resolved.path);
248
- this.extensionResolutionCache.set(normalizedPath, resolved.path);
249
245
  logContentMetric("FILE_LIST_HIT", {
250
246
  path: normalizedPath,
251
247
  resolvedPath: resolved.path,
@@ -253,15 +249,30 @@ export class ReadOperations {
253
249
  cacheKey,
254
250
  isPreviewMode,
255
251
  });
256
- logger.debug("Resolved extension from file list index", {
257
- basePath: normalizedPath,
252
+ this.finalizeResolvedExtension({
253
+ requestedPath: normalizedPath,
258
254
  resolvedPath: resolved.path,
255
+ cacheKeyPrefix,
259
256
  cacheKey,
260
- resolvedCacheKey: resolvedCacheKey === cacheKey ? undefined : resolvedCacheKey,
257
+ content: resolved.content,
258
+ persistToCache: isProduction,
259
+ logMessage: "Resolved extension from file list index",
261
260
  });
262
- this.cacheResolvedContent(cacheKey, resolvedCacheKey, resolved.content, isProduction);
263
261
  return resolved;
264
262
  }
263
+ finalizeResolvedExtension({ requestedPath, resolvedPath, cacheKeyPrefix, cacheKey, content, persistToCache, logMessage, }) {
264
+ const resolvedCacheKey = getResolvedCacheKey(cacheKeyPrefix, resolvedPath);
265
+ // Cache the path mapping to avoid future API resolution calls.
266
+ this.extensionResolutionCache.set(requestedPath, resolvedPath);
267
+ logger.debug(logMessage, {
268
+ basePath: requestedPath,
269
+ resolvedPath,
270
+ cacheKey,
271
+ resolvedCacheKey: resolvedCacheKey === cacheKey ? undefined : resolvedCacheKey,
272
+ });
273
+ this.cacheResolvedContent(cacheKey, resolvedCacheKey, content, persistToCache);
274
+ return content;
275
+ }
265
276
  cacheResolvedContent(cacheKey, resolvedCacheKey, content, persistToCache) {
266
277
  if (persistToCache) {
267
278
  this.cache.set(cacheKey, content);
@@ -279,6 +290,9 @@ export class ReadOperations {
279
290
  setRequestScopedFile(cacheKey, content);
280
291
  return content;
281
292
  }
293
+ fetchPublishedVariant(apiPath, releaseId, environmentName) {
294
+ return this.client.getPublishedFileContent(apiPath, releaseId ?? undefined, environmentName ?? undefined);
295
+ }
282
296
  async fetchContent(normalizedPath) {
283
297
  // Framework paths should NEVER be fetched from API - they must be read from local filesystem.
284
298
  // If we reach here for a framework path, the module server's local resolution failed.
@@ -357,7 +371,7 @@ export class ReadOperations {
357
371
  environmentName: environmentName ?? undefined,
358
372
  });
359
373
  try {
360
- const content = await this.client.getPublishedFileContent(apiPath, releaseId ?? undefined, environmentName ?? undefined);
374
+ const content = await this.fetchPublishedVariant(apiPath, releaseId, environmentName);
361
375
  logger.debug("Fetched published content", {
362
376
  path: normalizedPath,
363
377
  contentLength: content.length,
@@ -423,7 +437,7 @@ export class ReadOperations {
423
437
  const candidates = EXTENSION_PRIORITY.filter((ext) => ext !== originalExt);
424
438
  const startTime = performance.now();
425
439
  const promises = candidates.map(async (ext) => {
426
- const content = await this.client.getPublishedFileContent(basePath + ext, releaseId ?? undefined, environmentName ?? undefined);
440
+ const content = await this.fetchPublishedVariant(basePath + ext, releaseId, environmentName);
427
441
  return { ext, content };
428
442
  });
429
443
  // Mark all promises as handled to prevent unhandled rejection errors
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.1.175";
1
+ export declare const VERSION = "0.1.177";
2
2
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
- export const VERSION = "0.1.175";
3
+ export const VERSION = "0.1.177";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.175",
3
+ "version": "0.1.177",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",
package/src/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.175",
3
+ "version": "0.1.177",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -316,26 +316,15 @@ export class ReadOperations {
316
316
  if (!resolved) return null;
317
317
 
318
318
  const resolvedPath = this.normalizer.normalize(resolved.path);
319
- const resolvedCacheKey = getResolvedCacheKey(cacheKeyPrefix, resolvedPath);
320
-
321
- // Cache the path mapping to avoid future API resolution calls
322
- this.extensionResolutionCache.set(apiPath, resolvedPath);
323
-
324
- logger.debug("Resolved extension for base path", {
325
- basePath: apiPath,
319
+ return this.finalizeResolvedExtension({
320
+ requestedPath: apiPath,
326
321
  resolvedPath,
322
+ cacheKeyPrefix,
327
323
  cacheKey,
328
- resolvedCacheKey: resolvedCacheKey === cacheKey ? undefined : resolvedCacheKey,
324
+ content: resolved.content,
325
+ persistToCache: isProduction && !skipPersistentCaches,
326
+ logMessage: "Resolved extension for base path",
329
327
  });
330
-
331
- this.cacheResolvedContent(
332
- cacheKey,
333
- resolvedCacheKey,
334
- resolved.content,
335
- isProduction && !skipPersistentCaches,
336
- );
337
-
338
- return resolved.content;
339
328
  } catch (error) {
340
329
  logger.debug("resolveFileWithExtension failed", {
341
330
  basePath: apiPath,
@@ -357,10 +346,6 @@ export class ReadOperations {
357
346
  const resolved = await this.fileListIndex.findFirstMatch(candidatePaths);
358
347
  if (resolved.status !== "hit" || !resolved.path || !resolved.content) return resolved;
359
348
 
360
- const resolvedCacheKey = getResolvedCacheKey(cacheKeyPrefix, resolved.path);
361
-
362
- this.extensionResolutionCache.set(normalizedPath, resolved.path);
363
-
364
349
  logContentMetric("FILE_LIST_HIT", {
365
350
  path: normalizedPath,
366
351
  resolvedPath: resolved.path,
@@ -368,18 +353,55 @@ export class ReadOperations {
368
353
  cacheKey,
369
354
  isPreviewMode,
370
355
  });
371
- logger.debug("Resolved extension from file list index", {
372
- basePath: normalizedPath,
356
+
357
+ this.finalizeResolvedExtension({
358
+ requestedPath: normalizedPath,
373
359
  resolvedPath: resolved.path,
360
+ cacheKeyPrefix,
374
361
  cacheKey,
375
- resolvedCacheKey: resolvedCacheKey === cacheKey ? undefined : resolvedCacheKey,
362
+ content: resolved.content,
363
+ persistToCache: isProduction,
364
+ logMessage: "Resolved extension from file list index",
376
365
  });
377
366
 
378
- this.cacheResolvedContent(cacheKey, resolvedCacheKey, resolved.content, isProduction);
379
-
380
367
  return resolved;
381
368
  }
382
369
 
370
+ private finalizeResolvedExtension(
371
+ {
372
+ requestedPath,
373
+ resolvedPath,
374
+ cacheKeyPrefix,
375
+ cacheKey,
376
+ content,
377
+ persistToCache,
378
+ logMessage,
379
+ }: {
380
+ requestedPath: string;
381
+ resolvedPath: string;
382
+ cacheKeyPrefix: string;
383
+ cacheKey: string;
384
+ content: string;
385
+ persistToCache: boolean;
386
+ logMessage: string;
387
+ },
388
+ ): string {
389
+ const resolvedCacheKey = getResolvedCacheKey(cacheKeyPrefix, resolvedPath);
390
+
391
+ // Cache the path mapping to avoid future API resolution calls.
392
+ this.extensionResolutionCache.set(requestedPath, resolvedPath);
393
+
394
+ logger.debug(logMessage, {
395
+ basePath: requestedPath,
396
+ resolvedPath,
397
+ cacheKey,
398
+ resolvedCacheKey: resolvedCacheKey === cacheKey ? undefined : resolvedCacheKey,
399
+ });
400
+
401
+ this.cacheResolvedContent(cacheKey, resolvedCacheKey, content, persistToCache);
402
+ return content;
403
+ }
404
+
383
405
  private cacheResolvedContent(
384
406
  cacheKey: string,
385
407
  resolvedCacheKey: string,
@@ -406,6 +428,18 @@ export class ReadOperations {
406
428
  return content;
407
429
  }
408
430
 
431
+ private fetchPublishedVariant(
432
+ apiPath: string,
433
+ releaseId: string | null,
434
+ environmentName?: string | null,
435
+ ): Promise<string> {
436
+ return this.client.getPublishedFileContent(
437
+ apiPath,
438
+ releaseId ?? undefined,
439
+ environmentName ?? undefined,
440
+ );
441
+ }
442
+
409
443
  private async fetchContent(normalizedPath: string): Promise<string> {
410
444
  // Framework paths should NEVER be fetched from API - they must be read from local filesystem.
411
445
  // If we reach here for a framework path, the module server's local resolution failed.
@@ -579,11 +613,7 @@ export class ReadOperations {
579
613
  });
580
614
 
581
615
  try {
582
- const content = await this.client.getPublishedFileContent(
583
- apiPath,
584
- releaseId ?? undefined,
585
- environmentName ?? undefined,
586
- );
616
+ const content = await this.fetchPublishedVariant(apiPath, releaseId, environmentName);
587
617
 
588
618
  logger.debug("Fetched published content", {
589
619
  path: normalizedPath,
@@ -686,11 +716,7 @@ export class ReadOperations {
686
716
  const startTime = performance.now();
687
717
 
688
718
  const promises = candidates.map(async (ext) => {
689
- const content = await this.client.getPublishedFileContent(
690
- basePath + ext,
691
- releaseId ?? undefined,
692
- environmentName ?? undefined,
693
- );
719
+ const content = await this.fetchPublishedVariant(basePath + ext, releaseId, environmentName);
694
720
  return { ext, content };
695
721
  });
696
722
 
@@ -1,3 +1,3 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
- export const VERSION = "0.1.175";
3
+ export const VERSION = "0.1.177";