@vesk/vesk-cli 0.2.40 → 0.2.41

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.
Files changed (2) hide show
  1. package/dist/cli.js +64 -12
  2. package/package.json +5 -5
package/dist/cli.js CHANGED
@@ -32694,6 +32694,7 @@ __export(image_pipeline_exports, {
32694
32694
  optimizeImages: () => optimizeImages
32695
32695
  });
32696
32696
  import { mkdirSync as mkdirSync8, writeFileSync as writeFileSync9, readFileSync as readFileSync18, existsSync as existsSync18, readdirSync as readdirSync4, statSync as statSync9 } from "node:fs";
32697
+ import { spawnSync } from "node:child_process";
32697
32698
  import { resolve as resolve16, extname as extname5, dirname as dirname12 } from "node:path";
32698
32699
  async function processImage(srcPath, outDir, baseName) {
32699
32700
  const image = sharpFn ? sharpFn(srcPath) : null;
@@ -32808,8 +32809,17 @@ var init_image_pipeline = __esm({
32808
32809
  FORMATS = ["webp", "avif"];
32809
32810
  sharpFn = null;
32810
32811
  try {
32811
- const mod = await import("sharp");
32812
- sharpFn = mod.default;
32812
+ const probe = spawnSync(process.execPath, [
32813
+ "--input-type=module",
32814
+ "-e",
32815
+ "import sharp from 'sharp'; await sharp({ create: { width: 2, height: 2, channels: 3, background: 'red' } }).png().toBuffer();"
32816
+ ], { stdio: "ignore" });
32817
+ if (probe.status === 0) {
32818
+ const mod = await import("sharp");
32819
+ sharpFn = mod.default;
32820
+ } else {
32821
+ console.warn("vesk images: sharp native probe failed; using copy-only image pipeline");
32822
+ }
32813
32823
  } catch {
32814
32824
  }
32815
32825
  }
@@ -37917,9 +37927,6 @@ function compileVskCodegen(source, opts = {}) {
37917
37927
  }
37918
37928
  return { code, mappings: g2.mappings, styleRegions: g2.styleRegions, errors: [] };
37919
37929
  }
37920
- function vskToTsx(source) {
37921
- return compileVskCodegen(source).code;
37922
- }
37923
37930
  function isTypeDecl(stmt) {
37924
37931
  return stmt.type === "TSInterfaceDeclaration" || stmt.type === "TSTypeAliasDeclaration" || stmt.type === "ExportNamedDeclaration" && (stmt.declaration?.type === "TSInterfaceDeclaration" || stmt.declaration?.type === "TSTypeAliasDeclaration");
37925
37932
  }
@@ -38120,7 +38127,7 @@ function createTypecheckHost(projectRoot, appDir, vskFiles) {
38120
38127
  } else if (file.endsWith(".css.d.ts")) {
38121
38128
  content = "";
38122
38129
  } else if (vskFiles.has(file)) {
38123
- content = vskToTsx(vskFiles.get(file));
38130
+ content = compileVskCodegen(vskFiles.get(file)).code;
38124
38131
  } else if (ts8.sys.fileExists(file)) {
38125
38132
  content = ts8.sys.readFile(file);
38126
38133
  }
@@ -38161,7 +38168,7 @@ function createTypecheckHost(projectRoot, appDir, vskFiles) {
38161
38168
  if (file.endsWith(".css.d.ts"))
38162
38169
  return "";
38163
38170
  if (vskFiles.has(file))
38164
- return vskToTsx(vskFiles.get(file));
38171
+ return compileVskCodegen(vskFiles.get(file)).code;
38165
38172
  return ts8.sys.readFile(file);
38166
38173
  },
38167
38174
  writeFile: () => {
@@ -38211,6 +38218,35 @@ function createTypecheckHost(projectRoot, appDir, vskFiles) {
38211
38218
  };
38212
38219
  return host;
38213
38220
  }
38221
+ function mapGeneratedOffset(mappings, generatedOffset) {
38222
+ let nearest = null;
38223
+ for (const mapping of mappings) {
38224
+ for (let i = 0; i < mapping.generatedOffsets.length; i++) {
38225
+ const generated = mapping.generatedOffsets[i];
38226
+ const length = mapping.lengths[i] ?? 0;
38227
+ const source = mapping.sourceOffsets[i];
38228
+ if (generated <= generatedOffset && generated + length >= generatedOffset) {
38229
+ return source + (generatedOffset - generated);
38230
+ }
38231
+ if (generated <= generatedOffset && (!nearest || generated > nearest.generated)) {
38232
+ nearest = { source, generated, length };
38233
+ }
38234
+ }
38235
+ }
38236
+ return nearest ? nearest.source + Math.min(nearest.length, Math.max(0, generatedOffset - nearest.generated)) : null;
38237
+ }
38238
+ function sourcePosition(source, offset2) {
38239
+ const bounded = Math.max(0, Math.min(offset2, source.length));
38240
+ let line = 1;
38241
+ let lineStart = 0;
38242
+ for (let i = 0; i < bounded; i++) {
38243
+ if (source.charCodeAt(i) === 10) {
38244
+ line++;
38245
+ lineStart = i + 1;
38246
+ }
38247
+ }
38248
+ return { line, character: bounded - lineStart + 1 };
38249
+ }
38214
38250
  function typecheckProject(projectRoot, opts = {}) {
38215
38251
  const appDir = opts.appDir ?? join25(projectRoot, "app");
38216
38252
  const vskFiles = /* @__PURE__ */ new Map();
@@ -38291,12 +38327,28 @@ function typecheckProject(projectRoot, opts = {}) {
38291
38327
  }
38292
38328
  if (!rootSet.has(filePath) && !vskSet.has(filePath))
38293
38329
  continue;
38294
- const pos = file.getLineAndCharacterOfPosition(diag.start ?? 0);
38330
+ let sourceOffset = diag.start ?? 0;
38331
+ let line;
38332
+ let column;
38333
+ if (vskFiles.has(filePath)) {
38334
+ const source = vskFiles.get(filePath);
38335
+ const generated = compileVskCodegen(source);
38336
+ const mapped = mapGeneratedOffset(generated.mappings, sourceOffset);
38337
+ if (mapped !== null)
38338
+ sourceOffset = mapped;
38339
+ const pos = sourcePosition(source, sourceOffset);
38340
+ line = pos.line;
38341
+ column = pos.character;
38342
+ } else {
38343
+ const pos = file.getLineAndCharacterOfPosition(diag.start ?? 0);
38344
+ line = pos.line + 1;
38345
+ column = pos.character + 1;
38346
+ }
38295
38347
  const code = typeof diag.code === "number" ? `TS${diag.code}` : String(diag.code);
38296
38348
  errors.push({
38297
38349
  file: relative8(projectRoot, filePath),
38298
- line: pos.line + 1,
38299
- column: pos.character + 1,
38350
+ line,
38351
+ column,
38300
38352
  code,
38301
38353
  message: ts8.flattenDiagnosticMessageText(diag.messageText, "\n")
38302
38354
  });
@@ -52839,7 +52891,7 @@ function renderDevErrorPage(payload, opts) {
52839
52891
  }
52840
52892
 
52841
52893
  // src/build-packages.ts
52842
- import { spawnSync } from "node:child_process";
52894
+ import { spawnSync as spawnSync2 } from "node:child_process";
52843
52895
  import { cpSync as cpSync2, existsSync as existsSync40, mkdirSync as mkdirSync18, readFileSync as readFileSync36, readdirSync as readdirSync11, statSync as statSync20, writeFileSync as writeFileSync20 } from "node:fs";
52844
52896
  import { createRequire as createRequire6 } from "node:module";
52845
52897
  import { dirname as dirname25, join as join23, resolve as resolve36 } from "node:path";
@@ -52914,7 +52966,7 @@ function buildPackages(force = false) {
52914
52966
  if (!force && !distStale(pkgDir, cfg.entry)) continue;
52915
52967
  console.log(`[build] ${cfg.name} -> tsc`);
52916
52968
  const tscBin = require2.resolve("typescript/bin/tsc");
52917
- const result = spawnSync(process.execPath, [tscBin, "-p", join23(pkgDir, "tsconfig.build.json")], {
52969
+ const result = spawnSync2(process.execPath, [tscBin, "-p", join23(pkgDir, "tsconfig.build.json")], {
52918
52970
  stdio: "inherit"
52919
52971
  });
52920
52972
  if (result.status !== 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vesk/vesk-cli",
3
- "version": "0.2.40",
3
+ "version": "0.2.41",
4
4
  "type": "module",
5
5
  "description": "Vesk — compiler-first framework for the post-VDOM web. vesk dev, vesk build.",
6
6
  "bin": {
@@ -8,10 +8,10 @@
8
8
  },
9
9
  "main": "./dist/cli.js",
10
10
  "dependencies": {
11
- "@vesk/adapter": "^0.2.40",
12
- "@vesk/compiler": "^0.2.40",
13
- "@vesk/plugin-tailwind": "^0.2.40",
14
- "@vesk/runtime": "^0.2.40",
11
+ "@vesk/adapter": "^0.2.41",
12
+ "@vesk/compiler": "^0.2.41",
13
+ "@vesk/plugin-tailwind": "^0.2.41",
14
+ "@vesk/runtime": "^0.2.41",
15
15
  "esrap": "^2.3.0",
16
16
  "typescript": "^5.8.0",
17
17
  "ws": "^8.18.0",