fix: package zvec native bindings

This commit is contained in:
Tienson Qin
2026-05-28 22:20:14 +08:00
parent fd5e004f04
commit 32652458e1
6 changed files with 122 additions and 17 deletions

View File

@@ -154,7 +154,6 @@
"@sentry/react": "^10.51.0",
"@sqlite.org/sqlite-wasm": "3.51.2-build9",
"@tabler/icons-react": "2.47.0",
"@zvec/zvec": "0.4.0",
"bignumber.js": "^9.3.1",
"chrono-node": "2.9.0",
"codemirror": "5.65.18",
@@ -195,6 +194,13 @@
"url": "^0.11.4",
"util": "^0.12.5"
},
"optionalDependencies": {
"@zvec/bindings-darwin-arm64": "0.4.0",
"@zvec/bindings-linux-arm64": "0.4.0",
"@zvec/bindings-linux-x64": "0.4.0",
"@zvec/bindings-win32-x64": "0.4.0",
"@zvec/zvec": "0.4.0"
},
"pnpm": {
"ignoredBuiltDependencies": [
"canvas",

20
pnpm-lock.yaml generated
View File

@@ -113,9 +113,6 @@ importers:
'@tabler/icons-react':
specifier: 2.47.0
version: 2.47.0(react@18.3.1)
'@zvec/zvec':
specifier: 0.4.0
version: 0.4.0
bignumber.js:
specifier: ^9.3.1
version: 9.3.1
@@ -336,6 +333,22 @@ importers:
ws:
specifier: ^8.20.0
version: 8.20.0
optionalDependencies:
'@zvec/bindings-darwin-arm64':
specifier: 0.4.0
version: 0.4.0
'@zvec/bindings-linux-arm64':
specifier: 0.4.0
version: 0.4.0
'@zvec/bindings-linux-x64':
specifier: 0.4.0
version: 0.4.0
'@zvec/bindings-win32-x64':
specifier: 0.4.0
version: 0.4.0
'@zvec/zvec':
specifier: 0.4.0
version: 0.4.0
packages:
@@ -5828,6 +5841,7 @@ snapshots:
'@zvec/bindings-linux-arm64': 0.4.0
'@zvec/bindings-linux-x64': 0.4.0
'@zvec/bindings-win32-x64': 0.4.0
optional: true
JSONStream@1.3.5:
dependencies:

View File

@@ -23,7 +23,6 @@
"@fastify/cors": "11.2.0",
"@js-joda/core": "3.2.0",
"@modelcontextprotocol/sdk": "^1.27.1",
"@zvec/zvec": "0.4.0",
"abort-controller": "3.0.0",
"command-exists": "1.2.9",
"diff-match-patch": "1.0.5",
@@ -54,6 +53,13 @@
"electron-builder": "26.8.2",
"electron-devtools-installer": "4.0.0"
},
"optionalDependencies": {
"@zvec/bindings-darwin-arm64": "0.4.0",
"@zvec/bindings-linux-arm64": "0.4.0",
"@zvec/bindings-linux-x64": "0.4.0",
"@zvec/bindings-win32-x64": "0.4.0",
"@zvec/zvec": "0.4.0"
},
"resolutions": {
"node-abi": "4.28.0"
},

View File

@@ -20,9 +20,6 @@ importers:
'@modelcontextprotocol/sdk':
specifier: ^1.27.1
version: 1.29.0(zod@4.3.6)
'@zvec/zvec':
specifier: 0.4.0
version: 0.4.0
abort-controller:
specifier: 3.0.0
version: 3.0.0
@@ -105,6 +102,22 @@ importers:
electron-devtools-installer:
specifier: 4.0.0
version: 4.0.0
optionalDependencies:
'@zvec/bindings-darwin-arm64':
specifier: 0.4.0
version: 0.4.0
'@zvec/bindings-linux-arm64':
specifier: 0.4.0
version: 0.4.0
'@zvec/bindings-linux-x64':
specifier: 0.4.0
version: 0.4.0
'@zvec/bindings-win32-x64':
specifier: 0.4.0
version: 0.4.0
'@zvec/zvec':
specifier: 0.4.0
version: 0.4.0
packages:
@@ -2534,6 +2547,7 @@ snapshots:
'@zvec/bindings-linux-arm64': 0.4.0
'@zvec/bindings-linux-x64': 0.4.0
'@zvec/bindings-win32-x64': 0.4.0
optional: true
abbrev@3.0.1: {}
@@ -2665,6 +2679,7 @@ snapshots:
bindings@1.5.0:
dependencies:
file-uri-to-path: 1.0.0
optional: true
bl@4.1.0:
dependencies:
@@ -3278,7 +3293,8 @@ snapshots:
node-domexception: 1.0.0
web-streams-polyfill: 3.3.3
file-uri-to-path@1.0.0: {}
file-uri-to-path@1.0.0:
optional: true
filelist@1.0.6:
dependencies:

View File

@@ -38,6 +38,10 @@ const assertReleaseEntrypoint = (content) => {
const dependencyNames = [
"@js-joda/core",
"@zvec/bindings-darwin-arm64",
"@zvec/bindings-linux-arm64",
"@zvec/bindings-linux-x64",
"@zvec/bindings-win32-x64",
"@zvec/zvec",
"better-sqlite3",
"fs-extra",
@@ -54,16 +58,28 @@ const onlyBuiltDependencies = rootPackage.pnpm.onlyBuiltDependencies.filter(
);
const dependencyVersion = (name) =>
rootPackage.dependencies?.[name] ?? rootPackage.devDependencies?.[name];
rootPackage.dependencies?.[name] ??
rootPackage.optionalDependencies?.[name] ??
rootPackage.devDependencies?.[name];
const dependencyEntries = dependencyNames.map((name) => {
const version = dependencyVersion(name);
if (!version) {
throw new Error(`Missing CLI runtime dependency in package.json: ${name}`);
}
return [name, version];
});
const optionalDependencyNames = new Set(
Object.keys(rootPackage.optionalDependencies ?? {}),
);
const dependencies = Object.fromEntries(
dependencyNames.map((name) => {
const version = dependencyVersion(name);
if (!version) {
throw new Error(`Missing CLI runtime dependency in package.json: ${name}`);
}
return [name, version];
}),
dependencyEntries.filter(([name]) => !optionalDependencyNames.has(name)),
);
const optionalDependencies = Object.fromEntries(
dependencyEntries.filter(([name]) => optionalDependencyNames.has(name)),
);
assertReleaseEntrypoint(
@@ -105,6 +121,7 @@ const packageJson = {
],
files: packageFiles,
dependencies,
optionalDependencies,
pnpm: {
onlyBuiltDependencies,
},

View File

@@ -9,6 +9,20 @@ const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."
const readText = (relativePath) =>
fs.readFileSync(path.join(repoRoot, relativePath), "utf8");
const readJson = (relativePath) =>
JSON.parse(readText(relativePath));
const rootPackage = readJson("package.json");
const desktopPackage = readJson("resources/package.json");
const zvecOptionalRuntimeDependencies = [
"@zvec/bindings-darwin-arm64",
"@zvec/bindings-linux-arm64",
"@zvec/bindings-linux-x64",
"@zvec/bindings-win32-x64",
"@zvec/zvec",
];
const assertNotContains = (text, needle, label) => {
assert.equal(
text.includes(needle),
@@ -90,6 +104,27 @@ assertNotContains(lintTask, '"deps/cli"', "lint task");
const lintDepsTask = readText("scripts/src/logseq/tasks/dev/lint_test_deps.clj");
assertNotContains(lintDepsTask, '"deps/cli"', "lint/test deps task");
for (const dependencyName of zvecOptionalRuntimeDependencies) {
assert.equal(
rootPackage.dependencies?.[dependencyName],
undefined,
`${dependencyName} should not be a hard root runtime dependency`,
);
assert.ok(
rootPackage.optionalDependencies?.[dependencyName],
`${dependencyName} should be an optional root runtime dependency`,
);
assert.equal(
desktopPackage.dependencies?.[dependencyName],
undefined,
`${dependencyName} should not be a hard desktop runtime dependency`,
);
assert.ok(
desktopPackage.optionalDependencies?.[dependencyName],
`${dependencyName} should be an optional desktop runtime dependency`,
);
}
assert.equal(
fs.existsSync(path.join(repoRoot, "src/main/logseq/cli/common/mcp/server.cljs")),
false,
@@ -124,6 +159,17 @@ assert.equal(packageJson.dependencies?.zod, undefined);
assert.ok(packageJson.dependencies?.["@js-joda/core"], "publish package should include @js-joda/core for release artifacts");
assert.ok(packageJson.dependencies?.keytar, "publish package should include keytar for db-worker-node");
assert.ok(packageJson.dependencies?.["string-width"], "publish package should include string-width for CLI rendering");
for (const dependencyName of zvecOptionalRuntimeDependencies) {
assert.equal(
packageJson.dependencies?.[dependencyName],
undefined,
`${dependencyName} should not be a hard publish package dependency`,
);
assert.ok(
packageJson.optionalDependencies?.[dependencyName],
`${dependencyName} should be an optional publish package dependency`,
);
}
assert.deepEqual(packageJson.pnpm?.onlyBuiltDependencies, [
"@zvec/zvec",
"better-sqlite3",