veryfront 0.0.73 → 0.0.75

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.
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/_shims/deno-env.ts", "../../lib/usePageContext.tsx"],
4
+ "sourcesContent": ["/**\n * Shim for Deno.env in Node.js environment\n * This file is injected by esbuild to provide Deno.env compatibility\n */\n\n// @ts-ignore - Global Deno shim for Node.js\nglobalThis.Deno = globalThis.Deno || {\n env: {\n get(key: string): string | undefined {\n return process.env[key];\n },\n set(key: string, value: string): void {\n process.env[key] = value;\n },\n delete(key: string): void {\n delete process.env[key];\n },\n has(key: string): boolean {\n return key in process.env;\n },\n toObject(): Record<string, string> {\n return { ...process.env } as Record<string, string>;\n },\n },\n};\n", "import React from \"react\";\n\nexport interface PageContext {\n slug: string;\n path: string;\n params: Record<string, string>;\n query: Record<string, string>;\n frontmatter?: Record<string, unknown>;\n}\n\nconst PageContextValue = React.createContext<PageContext | null>(null);\n\n// SSR-safe default context\nconst defaultPageContext: PageContext = {\n slug: \"/\",\n path: \"/\",\n params: {},\n query: {},\n frontmatter: {},\n};\n\nexport function PageContextProvider({\n children,\n pageContext,\n}: {\n children: React.ReactNode;\n pageContext?: PageContext;\n}) {\n return (\n <PageContextValue.Provider value={pageContext || defaultPageContext}>\n {children}\n </PageContextValue.Provider>\n );\n}\n\nexport function usePageContext(): PageContext {\n const value = React.useContext(PageContextValue);\n if (!value) {\n // Return default context for SSR instead of throwing\n return defaultPageContext;\n }\n return value;\n}\n\nexport default usePageContext;\n"],
5
+ "mappings": ";AAMA,WAAW,OAAO,WAAW,QAAQ;AAAA,EACnC,KAAK;AAAA,IACH,IAAI,KAAiC;AACnC,aAAO,QAAQ,IAAI,GAAG;AAAA,IACxB;AAAA,IACA,IAAI,KAAa,OAAqB;AACpC,cAAQ,IAAI,GAAG,IAAI;AAAA,IACrB;AAAA,IACA,OAAO,KAAmB;AACxB,aAAO,QAAQ,IAAI,GAAG;AAAA,IACxB;AAAA,IACA,IAAI,KAAsB;AACxB,aAAO,OAAO,QAAQ;AAAA,IACxB;AAAA,IACA,WAAmC;AACjC,aAAO,EAAE,GAAG,QAAQ,IAAI;AAAA,IAC1B;AAAA,EACF;AACF;;;ACxBA,OAAO,WAAW;AA6Bd;AAnBJ,IAAM,mBAAmB,MAAM,cAAkC,IAAI;AAGrE,IAAM,qBAAkC;AAAA,EACtC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ,CAAC;AAAA,EACT,OAAO,CAAC;AAAA,EACR,aAAa,CAAC;AAChB;AAEO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AACF,GAGG;AACD,SACE,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,eAAe,oBAC9C,UACH;AAEJ;AAEO,SAAS,iBAA8B;AAC5C,QAAM,QAAQ,MAAM,WAAW,gBAAgB;AAC/C,MAAI,CAAC,OAAO;AAEV,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,IAAO,yBAAQ;",
6
+ "names": []
7
+ }
package/dist/data.js CHANGED
@@ -418,56 +418,158 @@ function getEnvironmentVariable(name) {
418
418
  }
419
419
  return void 0;
420
420
  }
421
+ function isProductionEnvironment() {
422
+ return getEnvironmentVariable("NODE_ENV") === "production";
423
+ }
421
424
 
422
425
  // src/core/utils/logger/logger.ts
423
426
  var cachedLogLevel;
427
+ var cachedLogFormat;
424
428
  function resolveLogLevel(force = false) {
425
429
  if (force || cachedLogLevel === void 0) {
426
430
  cachedLogLevel = getDefaultLevel();
427
431
  }
428
432
  return cachedLogLevel;
429
433
  }
430
- var ConsoleLogger = class {
431
- constructor(prefix, level = resolveLogLevel()) {
434
+ function resolveLogFormat(force = false) {
435
+ if (force || cachedLogFormat === void 0) {
436
+ cachedLogFormat = getDefaultFormat();
437
+ }
438
+ return cachedLogFormat;
439
+ }
440
+ function getDefaultFormat() {
441
+ const envFormat = getEnvironmentVariable("LOG_FORMAT");
442
+ if (envFormat === "json" || envFormat === "text") {
443
+ return envFormat;
444
+ }
445
+ return isProductionEnvironment() ? "json" : "text";
446
+ }
447
+ function serializeError(err) {
448
+ if (err instanceof Error) {
449
+ return {
450
+ name: err.name,
451
+ message: err.message,
452
+ stack: err.stack
453
+ };
454
+ }
455
+ if (err !== void 0 && err !== null) {
456
+ return {
457
+ name: "UnknownError",
458
+ message: String(err)
459
+ };
460
+ }
461
+ return void 0;
462
+ }
463
+ function extractContext(args) {
464
+ let context;
465
+ let error;
466
+ for (const arg of args) {
467
+ if (arg instanceof Error) {
468
+ error = serializeError(arg);
469
+ } else if (typeof arg === "object" && arg !== null && !Array.isArray(arg)) {
470
+ context = { ...context, ...arg };
471
+ }
472
+ }
473
+ return { context, error };
474
+ }
475
+ var ConsoleLogger = class _ConsoleLogger {
476
+ constructor(prefix, level = resolveLogLevel(), format = resolveLogFormat(), boundContext) {
432
477
  this.prefix = prefix;
433
478
  this.level = level;
479
+ this.format = format;
480
+ if (boundContext) {
481
+ this.boundContext = boundContext;
482
+ }
434
483
  }
484
+ boundContext = {};
435
485
  setLevel(level) {
436
486
  this.level = level;
437
487
  }
438
488
  getLevel() {
439
489
  return this.level;
440
490
  }
441
- debug(message, ...args) {
442
- if (this.level <= 0 /* DEBUG */) {
443
- console.debug(`[${this.prefix}] DEBUG: ${message}`, ...args);
491
+ setFormat(format) {
492
+ this.format = format;
493
+ }
494
+ getFormat() {
495
+ return this.format;
496
+ }
497
+ /**
498
+ * Create a child logger with additional bound context.
499
+ */
500
+ child(context) {
501
+ return new _ConsoleLogger(this.prefix, this.level, this.format, {
502
+ ...this.boundContext,
503
+ ...context
504
+ });
505
+ }
506
+ formatJson(level, message, args) {
507
+ const { context, error } = extractContext(args);
508
+ const entry = {
509
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
510
+ level,
511
+ service: this.prefix.toLowerCase(),
512
+ message
513
+ };
514
+ const mergedContext = { ...this.boundContext, ...context };
515
+ if (Object.keys(mergedContext).length > 0) {
516
+ if ("requestId" in mergedContext) {
517
+ entry.requestId = String(mergedContext.requestId);
518
+ delete mergedContext.requestId;
519
+ }
520
+ if ("traceId" in mergedContext) {
521
+ entry.traceId = String(mergedContext.traceId);
522
+ delete mergedContext.traceId;
523
+ }
524
+ if ("projectSlug" in mergedContext) {
525
+ entry.projectSlug = String(mergedContext.projectSlug);
526
+ delete mergedContext.projectSlug;
527
+ }
528
+ if ("durationMs" in mergedContext) {
529
+ entry.durationMs = Number(mergedContext.durationMs);
530
+ delete mergedContext.durationMs;
531
+ }
532
+ if (Object.keys(mergedContext).length > 0) {
533
+ entry.context = mergedContext;
534
+ }
444
535
  }
536
+ if (error) {
537
+ entry.error = error;
538
+ }
539
+ return JSON.stringify(entry);
445
540
  }
446
- info(message, ...args) {
447
- if (this.level <= 1 /* INFO */) {
448
- console.log(`[${this.prefix}] ${message}`, ...args);
541
+ log(level, logLevel, consoleFn, message, args) {
542
+ if (this.level > logLevel)
543
+ return;
544
+ if (this.format === "json") {
545
+ consoleFn(this.formatJson(level, message, args));
546
+ } else {
547
+ const prefix = level === "info" ? "" : ` ${level.toUpperCase()}:`;
548
+ consoleFn(`[${this.prefix}]${prefix} ${message}`, ...args);
449
549
  }
450
550
  }
551
+ debug(message, ...args) {
552
+ this.log("debug", 0 /* DEBUG */, console.debug, message, args);
553
+ }
554
+ info(message, ...args) {
555
+ this.log("info", 1 /* INFO */, console.log, message, args);
556
+ }
451
557
  warn(message, ...args) {
452
- if (this.level <= 2 /* WARN */) {
453
- console.warn(`[${this.prefix}] WARN: ${message}`, ...args);
454
- }
558
+ this.log("warn", 2 /* WARN */, console.warn, message, args);
455
559
  }
456
560
  error(message, ...args) {
457
- if (this.level <= 3 /* ERROR */) {
458
- console.error(`[${this.prefix}] ERROR: ${message}`, ...args);
459
- }
561
+ this.log("error", 3 /* ERROR */, console.error, message, args);
460
562
  }
461
563
  async time(label, fn) {
462
564
  const start = performance.now();
463
565
  try {
464
566
  const result = await fn();
465
- const end = performance.now();
466
- this.debug(`${label} completed in ${(end - start).toFixed(2)}ms`);
567
+ const durationMs = performance.now() - start;
568
+ this.debug(`${label} completed`, { durationMs: Math.round(durationMs) });
467
569
  return result;
468
570
  } catch (error) {
469
- const end = performance.now();
470
- this.error(`${label} failed after ${(end - start).toFixed(2)}ms`, error);
571
+ const durationMs = performance.now() - start;
572
+ this.error(`${label} failed`, { durationMs: Math.round(durationMs) }, error);
471
573
  throw error;
472
574
  }
473
575
  }
@@ -510,6 +612,7 @@ var serverLogger = createLogger("SERVER");
510
612
  var rendererLogger = createLogger("RENDERER");
511
613
  var bundlerLogger = createLogger("BUNDLER");
512
614
  var agentLogger = createLogger("AGENT");
615
+ var proxyLogger = createLogger("PROXY");
513
616
  var logger = createLogger("VERYFRONT");
514
617
 
515
618
  // src/core/utils/constants/cache.ts
@@ -537,7 +640,7 @@ var LRU_DEFAULT_MAX_SIZE_BYTES = 50 * 1024 * 1024;
537
640
  // deno.json
538
641
  var deno_default = {
539
642
  name: "veryfront",
540
- version: "0.0.73",
643
+ version: "0.0.75",
541
644
  nodeModulesDir: "auto",
542
645
  exclude: [
543
646
  "npm/",
@@ -569,7 +672,11 @@ var deno_default = {
569
672
  "./oauth": "./src/core/oauth/index.ts",
570
673
  "./oauth/providers": "./src/core/oauth/providers/index.ts",
571
674
  "./oauth/handlers": "./src/core/oauth/handlers/index.ts",
572
- "./oauth/token-store": "./src/core/oauth/token-store/index.ts"
675
+ "./oauth/token-store": "./src/core/oauth/token-store/index.ts",
676
+ "./head": "./src/exports/head.ts",
677
+ "./router": "./src/exports/router.ts",
678
+ "./context": "./src/exports/context.ts",
679
+ "./fonts": "./src/exports/fonts.ts"
573
680
  },
574
681
  imports: {
575
682
  "@veryfront": "./src/index.ts",
@@ -622,12 +729,12 @@ var deno_default = {
622
729
  csstype: "https://esm.sh/csstype@3.2.3",
623
730
  "@types/react": "https://esm.sh/@types/react@18.3.27?deps=csstype@3.2.3",
624
731
  "@types/react-dom": "https://esm.sh/@types/react-dom@18.3.7?deps=csstype@3.2.3",
625
- react: "https://esm.sh/react@18.3.1",
626
- "react-dom": "https://esm.sh/react-dom@18.3.1",
627
- "react-dom/server": "https://esm.sh/react-dom@18.3.1/server",
628
- "react-dom/client": "https://esm.sh/react-dom@18.3.1/client",
629
- "react/jsx-runtime": "https://esm.sh/react@18.3.1/jsx-runtime",
630
- "react/jsx-dev-runtime": "https://esm.sh/react@18.3.1/jsx-dev-runtime",
732
+ react: "npm:react@18.3.1",
733
+ "react-dom": "npm:react-dom@18.3.1",
734
+ "react-dom/server": "npm:react-dom@18.3.1/server",
735
+ "react-dom/client": "npm:react-dom@18.3.1/client",
736
+ "react/jsx-runtime": "npm:react@18.3.1/jsx-runtime",
737
+ "react/jsx-dev-runtime": "npm:react@18.3.1/jsx-dev-runtime",
631
738
  "@mdx-js/mdx": "npm:@mdx-js/mdx@3.0.0",
632
739
  "@mdx-js/react": "npm:@mdx-js/react@3.0.0",
633
740
  "unist-util-visit": "npm:unist-util-visit@5.0.0",
@@ -637,27 +744,36 @@ var deno_default = {
637
744
  "remark-frontmatter": "npm:remark-frontmatter@5.0.0",
638
745
  "rehype-highlight": "npm:rehype-highlight@7.0.2",
639
746
  "rehype-slug": "npm:rehype-slug@6.0.0",
640
- esbuild: "https://deno.land/x/esbuild@v0.20.1/wasm.js",
641
- "esbuild/mod.js": "https://deno.land/x/esbuild@v0.20.1/mod.js",
747
+ esbuild: "npm:esbuild@0.20.2",
748
+ "esbuild/mod.js": "npm:esbuild@0.20.2",
642
749
  "es-module-lexer": "npm:es-module-lexer@1.5.0",
643
- zod: "npm:zod@3.23.8",
750
+ zod: "npm:zod@3.25.76",
644
751
  "mime-types": "npm:mime-types@2.1.35",
645
752
  mdast: "npm:@types/mdast@4.0.3",
646
753
  hast: "npm:@types/hast@3.0.3",
647
754
  unist: "npm:@types/unist@3.0.2",
648
755
  unified: "npm:unified@11.0.5",
649
- ai: "https://esm.sh/ai@5.0.76?deps=react@18.3.1,react-dom@18.3.1",
650
- "ai/react": "https://esm.sh/@ai-sdk/react@2.0.1?deps=react@18.3.1,react-dom@18.3.1",
651
- "@ai-sdk/react": "https://esm.sh/@ai-sdk/react@2.0.1?deps=react@18.3.1,react-dom@18.3.1",
756
+ ai: "npm:ai@5.0.76",
757
+ "ai/react": "npm:@ai-sdk/react@2.0.1",
758
+ "@ai-sdk/react": "npm:@ai-sdk/react@2.0.1",
652
759
  "@ai-sdk/openai": "https://esm.sh/@ai-sdk/openai@2.0.1",
653
760
  "@ai-sdk/anthropic": "https://esm.sh/@ai-sdk/anthropic@2.0.1",
654
761
  unocss: "https://esm.sh/unocss@0.59.0",
655
762
  "@unocss/core": "https://esm.sh/@unocss/core@0.59.0",
656
763
  "@unocss/preset-wind": "https://esm.sh/@unocss/preset-wind@0.59.0",
764
+ "next-themes": "npm:next-themes@0.4",
657
765
  redis: "npm:redis",
658
766
  pg: "npm:pg",
659
767
  "@opentelemetry/api": "npm:@opentelemetry/api@1",
660
- "@opentelemetry/core": "npm:@opentelemetry/core@1"
768
+ "@opentelemetry/core": "npm:@opentelemetry/core@1",
769
+ "@opentelemetry/sdk-trace-base": "npm:@opentelemetry/sdk-trace-base@1",
770
+ "@opentelemetry/exporter-trace-otlp-http": "npm:@opentelemetry/exporter-trace-otlp-http@0.57",
771
+ "@opentelemetry/resources": "npm:@opentelemetry/resources@1",
772
+ "@opentelemetry/semantic-conventions": "npm:@opentelemetry/semantic-conventions@1",
773
+ "@babel/parser": "npm:@babel/parser@7.26.3",
774
+ "@babel/traverse": "npm:@babel/traverse@7.26.3",
775
+ "@babel/generator": "npm:@babel/generator@7.26.3",
776
+ "@babel/types": "npm:@babel/types@7.26.3"
661
777
  },
662
778
  compilerOptions: {
663
779
  jsx: "react-jsx",
@@ -665,7 +781,7 @@ var deno_default = {
665
781
  strict: true,
666
782
  noImplicitAny: true,
667
783
  noUncheckedIndexedAccess: true,
668
- types: [],
784
+ types: ["npm:@types/react@18"],
669
785
  lib: [
670
786
  "deno.window",
671
787
  "dom",
@@ -680,9 +796,9 @@ var deno_default = {
680
796
  build: "deno compile --allow-all --output ../../bin/veryfront src/cli/main.ts",
681
797
  "build:npm": "deno run -A scripts/build-npm.ts",
682
798
  release: "deno run -A scripts/release.ts",
683
- test: "DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --unstable-worker-options --unstable-net",
684
- "test:unit": "DENO_JOBS=1 deno test --parallel --allow-all --v8-flags=--max-old-space-size=8192 --ignore=tests --unstable-worker-options --unstable-net",
685
- "test:integration": "DENO_JOBS=1 deno test --parallel --fail-fast --allow-all tests --unstable-worker-options --unstable-net",
799
+ test: "VF_DISABLE_LRU_INTERVAL=1 DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --unstable-worker-options --unstable-net",
800
+ "test:unit": "VF_DISABLE_LRU_INTERVAL=1 DENO_JOBS=1 deno test --parallel --allow-all --v8-flags=--max-old-space-size=8192 --ignore=tests,src/ai/workflow/__tests__ --unstable-worker-options --unstable-net",
801
+ "test:integration": "VF_DISABLE_LRU_INTERVAL=1 DENO_JOBS=1 deno test --parallel --fail-fast --allow-all tests --unstable-worker-options --unstable-net",
686
802
  "test:coverage": "rm -rf coverage && DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --coverage=coverage --unstable-worker-options --unstable-net || exit 1",
687
803
  "test:coverage:unit": "rm -rf coverage && DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --coverage=coverage --ignore=tests --unstable-worker-options --unstable-net || exit 1",
688
804
  "test:coverage:integration": "rm -rf coverage && DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --coverage=coverage tests --unstable-worker-options --unstable-net || exit 1",
@@ -763,6 +879,7 @@ function getEnv(key) {
763
879
 
764
880
  // src/core/utils/version.ts
765
881
  var VERSION = getEnv("VERYFRONT_VERSION") || (typeof deno_default.version === "string" ? deno_default.version : "0.0.0");
882
+ var SERVER_START_TIME = Date.now();
766
883
 
767
884
  // src/core/utils/constants/http.ts
768
885
  var KB_IN_BYTES = 1024;
@@ -960,6 +1077,9 @@ var InMemoryBundleManifestStore = class {
960
1077
  };
961
1078
  var manifestStore = new InMemoryBundleManifestStore();
962
1079
 
1080
+ // src/core/utils/perf-timer.ts
1081
+ var enabled = typeof process !== "undefined" ? process.env?.VERYFRONT_PERF === "1" : typeof Deno !== "undefined" ? Deno.env.get("VERYFRONT_PERF") === "1" : false;
1082
+
963
1083
  // src/core/utils/lru-wrapper.ts
964
1084
  var LRUCache = class {
965
1085
  adapter;
@@ -989,6 +1109,9 @@ var LRUCache = class {
989
1109
  this.adapter.cleanupExpired();
990
1110
  }, this.cleanupIntervalMs);
991
1111
  this.cleanupTimer = timer;
1112
+ if (typeof Deno !== "undefined" && "unrefTimer" in Deno) {
1113
+ Deno.unrefTimer(timer);
1114
+ }
992
1115
  }
993
1116
  toStringKey(key) {
994
1117
  if (typeof key === "string") {