@vizejs/native 0.363.0 → 0.366.0

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/native-binding.js CHANGED
@@ -5,10 +5,21 @@ const { loadTarget, nativeTargets } = require("./native-targets");
5
5
 
6
6
  const loadErrors = [];
7
7
 
8
+ function isMissingModuleForSpecifier(error, specifier) {
9
+ return (
10
+ error?.code === "MODULE_NOT_FOUND" &&
11
+ typeof error.message === "string" &&
12
+ error.message.includes(`'${specifier}'`)
13
+ );
14
+ }
15
+
8
16
  function tryRequire(specifier) {
9
17
  try {
10
18
  return require(specifier);
11
19
  } catch (error) {
20
+ if (isMissingModuleForSpecifier(error, specifier)) {
21
+ error.vizeMissingNativeSpecifier = true;
22
+ }
12
23
  loadErrors.push(error);
13
24
  return null;
14
25
  }
@@ -72,6 +83,16 @@ function buildLoadError() {
72
83
  return new Error("Failed to load native binding");
73
84
  }
74
85
 
86
+ const loadFailure = loadErrors.find((error) => !error?.vizeMissingNativeSpecifier);
87
+ if (loadFailure) {
88
+ return new Error(`Failed to load native binding: ${loadFailure.message}`, {
89
+ cause: loadErrors.reduce((error, current) => {
90
+ current.cause = error;
91
+ return current;
92
+ }),
93
+ });
94
+ }
95
+
75
96
  return new Error(
76
97
  `Cannot find native binding. ` +
77
98
  `npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` +
package/native-targets.js CHANGED
@@ -7,6 +7,16 @@ const { execFileSync } = require("node:child_process");
7
7
  const binaryName = "vize-vitrine";
8
8
  const packageVersion = require("./package.json").version;
9
9
 
10
+ function markMissingModuleForSpecifier(error, specifier) {
11
+ if (
12
+ error?.code === "MODULE_NOT_FOUND" &&
13
+ typeof error.message === "string" &&
14
+ error.message.includes(`'${specifier}'`)
15
+ ) {
16
+ error.vizeMissingNativeSpecifier = true;
17
+ }
18
+ }
19
+
10
20
  function isFileMusl(file) {
11
21
  return file.includes("libc.musl-") || file.includes("ld-musl-");
12
22
  }
@@ -113,15 +123,18 @@ function requireTargetPackage(target) {
113
123
  }
114
124
 
115
125
  function loadTarget(target, loadErrors) {
126
+ const localBinding = `./${binaryName}.${target}.node`;
116
127
  try {
117
- return require(`./${binaryName}.${target}.node`);
128
+ return require(localBinding);
118
129
  } catch (error) {
130
+ markMissingModuleForSpecifier(error, localBinding);
119
131
  loadErrors.push(error);
120
132
  }
121
133
 
122
134
  try {
123
135
  return requireTargetPackage(target);
124
136
  } catch (error) {
137
+ markMissingModuleForSpecifier(error, `@vizejs/native-${target}`);
125
138
  loadErrors.push(error);
126
139
  }
127
140
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vizejs/native",
3
- "version": "0.363.0",
3
+ "version": "0.366.0",
4
4
  "description": "High-performance Vue.js compiler - Native bindings",
5
5
  "keywords": [
6
6
  "compiler",
@@ -35,14 +35,14 @@
35
35
  "@napi-rs/cli": "3.6.2"
36
36
  },
37
37
  "optionalDependencies": {
38
- "@vizejs/native-darwin-arm64": "0.363.0",
39
- "@vizejs/native-darwin-x64": "0.363.0",
40
- "@vizejs/native-linux-arm64-gnu": "0.363.0",
41
- "@vizejs/native-linux-arm64-musl": "0.363.0",
42
- "@vizejs/native-linux-x64-gnu": "0.363.0",
43
- "@vizejs/native-linux-x64-musl": "0.363.0",
44
- "@vizejs/native-win32-arm64-msvc": "0.363.0",
45
- "@vizejs/native-win32-x64-msvc": "0.363.0"
38
+ "@vizejs/native-darwin-arm64": "0.366.0",
39
+ "@vizejs/native-darwin-x64": "0.366.0",
40
+ "@vizejs/native-linux-arm64-gnu": "0.366.0",
41
+ "@vizejs/native-linux-arm64-musl": "0.366.0",
42
+ "@vizejs/native-linux-x64-gnu": "0.366.0",
43
+ "@vizejs/native-linux-x64-musl": "0.366.0",
44
+ "@vizejs/native-win32-arm64-msvc": "0.366.0",
45
+ "@vizejs/native-win32-x64-msvc": "0.366.0"
46
46
  },
47
47
  "napi": {
48
48
  "binaryName": "vize-vitrine",