@ohos-rs/oxk 0.0.1-beta.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/README.md +31 -0
- package/bin/format.js +64 -0
- package/bin/oxk.js +75 -0
- package/browser.js +1 -0
- package/format.d.ts +20 -0
- package/format.js +135 -0
- package/index.d.ts +18 -0
- package/index.js +575 -0
- package/package.json +136 -0
package/README.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# `@ohos-rs/oxk`
|
|
2
|
+
|
|
3
|
+
> This is forked from [package-template-pnpm](https://github.com/napi-rs/package-template-pnpm).
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
Install with npm
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @ohos-rs/oxk
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Run with cli
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
oxk format xxx.ets
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Run with code
|
|
20
|
+
|
|
21
|
+
Using napi-native module format.
|
|
22
|
+
|
|
23
|
+
```js
|
|
24
|
+
const oxk = require('@ohos-rs/oxk')
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Using wrapper module format.
|
|
28
|
+
|
|
29
|
+
```js
|
|
30
|
+
const oxk = require('@ohos-rs/oxk/format')
|
|
31
|
+
```
|
package/bin/format.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
const { readFileSync, writeFileSync } = require('fs')
|
|
2
|
+
const { relative } = require('path')
|
|
3
|
+
const { format } = require('../format.js')
|
|
4
|
+
const { glob } = require('glob')
|
|
5
|
+
|
|
6
|
+
async function formatFiles(files) {
|
|
7
|
+
if (files.length === 0) {
|
|
8
|
+
console.error('Error: No files specified for formatting')
|
|
9
|
+
process.exit(1)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let hasErrors = false
|
|
13
|
+
let formattedCount = 0
|
|
14
|
+
const allFiles = new Set() // Use Set to avoid duplicates
|
|
15
|
+
|
|
16
|
+
// Use glob to expand patterns
|
|
17
|
+
for (const filePattern of files) {
|
|
18
|
+
try {
|
|
19
|
+
const matchedFiles = await glob(filePattern, {
|
|
20
|
+
absolute: true,
|
|
21
|
+
ignore: ['**/node_modules/**'],
|
|
22
|
+
})
|
|
23
|
+
matchedFiles.forEach((file) => allFiles.add(file))
|
|
24
|
+
} catch (error) {
|
|
25
|
+
console.error(`Error expanding pattern "${filePattern}":`, error.message)
|
|
26
|
+
hasErrors = true
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (allFiles.size === 0) {
|
|
31
|
+
console.error('Error: No files found matching the specified patterns')
|
|
32
|
+
process.exit(1)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
for (const filePath of allFiles) {
|
|
36
|
+
try {
|
|
37
|
+
const sourceText = readFileSync(filePath, 'utf-8')
|
|
38
|
+
// Use relative path for format function (it expects the original file name)
|
|
39
|
+
const relativePath = relative(process.cwd(), filePath)
|
|
40
|
+
|
|
41
|
+
const result = await format(relativePath, sourceText)
|
|
42
|
+
|
|
43
|
+
if (result.errors.length > 0) {
|
|
44
|
+
console.error(`Error formatting ${relativePath}:`)
|
|
45
|
+
result.errors.forEach((err) => console.error(` ${err}`))
|
|
46
|
+
hasErrors = true
|
|
47
|
+
} else {
|
|
48
|
+
writeFileSync(filePath, result.code, 'utf-8')
|
|
49
|
+
console.log(`Formatted: ${relativePath}`)
|
|
50
|
+
formattedCount++
|
|
51
|
+
}
|
|
52
|
+
} catch (error) {
|
|
53
|
+
console.error(`Error processing ${filePath}:`, error.message)
|
|
54
|
+
hasErrors = true
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
console.log(`\nFormatted ${formattedCount} file(s)`)
|
|
59
|
+
if (hasErrors) {
|
|
60
|
+
process.exit(1)
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
module.exports = { formatFiles }
|
package/bin/oxk.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const VERSION = require('../package.json').version
|
|
4
|
+
|
|
5
|
+
// Import command modules
|
|
6
|
+
const { formatFiles } = require('./format.js')
|
|
7
|
+
|
|
8
|
+
function showHelp() {
|
|
9
|
+
console.log(`
|
|
10
|
+
oxk - An ArkTS/ArkUI tool based on OXC
|
|
11
|
+
|
|
12
|
+
Usage:
|
|
13
|
+
oxk <command> [options] [files...]
|
|
14
|
+
|
|
15
|
+
Commands:
|
|
16
|
+
format Format files
|
|
17
|
+
lint Lint files (not yet supported)
|
|
18
|
+
|
|
19
|
+
Options:
|
|
20
|
+
--help, -h Show help
|
|
21
|
+
--version, -v Show version
|
|
22
|
+
|
|
23
|
+
Examples:
|
|
24
|
+
oxk format src/**/*.ets
|
|
25
|
+
`)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function showVersion() {
|
|
29
|
+
console.log(`oxk v${VERSION}`)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Main CLI handler
|
|
33
|
+
async function main() {
|
|
34
|
+
const args = process.argv.slice(2)
|
|
35
|
+
|
|
36
|
+
if (args.length === 0) {
|
|
37
|
+
showHelp()
|
|
38
|
+
process.exit(0)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const command = args[0]
|
|
42
|
+
|
|
43
|
+
// Handle global options
|
|
44
|
+
if (command === '--help' || command === '-h') {
|
|
45
|
+
showHelp()
|
|
46
|
+
process.exit(0)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (command === '--version' || command === '-v') {
|
|
50
|
+
showVersion()
|
|
51
|
+
process.exit(0)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Handle commands by calling functions directly
|
|
55
|
+
const remainingArgs = args.slice(1)
|
|
56
|
+
|
|
57
|
+
try {
|
|
58
|
+
switch (command) {
|
|
59
|
+
case 'format':
|
|
60
|
+
await formatFiles(remainingArgs)
|
|
61
|
+
break
|
|
62
|
+
|
|
63
|
+
default:
|
|
64
|
+
console.error(`Unknown command: ${command}`)
|
|
65
|
+
console.error("Run 'oxk --help' for usage information")
|
|
66
|
+
process.exit(1)
|
|
67
|
+
}
|
|
68
|
+
} catch (error) {
|
|
69
|
+
console.error('Unexpected error:', error)
|
|
70
|
+
process.exit(1)
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Run the CLI
|
|
75
|
+
main()
|
package/browser.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@ohos-rs/oxk-wasm32-wasi'
|
package/format.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format the given source text according to the specified options.
|
|
3
|
+
*
|
|
4
|
+
* This is a convenience wrapper that automatically uses Prettier for external formatter callbacks.
|
|
5
|
+
* For more control, use the raw `format` function from `./index.js` directly.
|
|
6
|
+
*
|
|
7
|
+
* @param fileName - The name of the file to format
|
|
8
|
+
* @param sourceText - The source code to format
|
|
9
|
+
* @param options - Optional formatting options (compatible with Prettier options)
|
|
10
|
+
* @returns A promise that resolves to the formatted code and any errors
|
|
11
|
+
*/
|
|
12
|
+
export declare function format(
|
|
13
|
+
fileName: string,
|
|
14
|
+
sourceText: string,
|
|
15
|
+
options?: Record<string, any>,
|
|
16
|
+
): Promise<{ code: string; errors: string[] }>
|
|
17
|
+
|
|
18
|
+
// Re-export the raw format function for advanced usage
|
|
19
|
+
export { format as formatRaw } from './index.js'
|
|
20
|
+
export type { FormatResult } from './index.d.ts'
|
package/format.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// Convenience wrapper that automatically uses Prettier for external formatter callbacks
|
|
2
|
+
const { format: napiFormat } = require("./index.js");
|
|
3
|
+
|
|
4
|
+
// Lazy load Prettier
|
|
5
|
+
let prettierCache;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* TODO: Plugins support
|
|
9
|
+
* - Read `plugins` field
|
|
10
|
+
* - Load plugins dynamically and parse `languages` field
|
|
11
|
+
* - Map file extensions and filenames to Prettier parsers
|
|
12
|
+
*
|
|
13
|
+
* @returns {Promise<string[]>} Array of loaded plugin's `languages` info
|
|
14
|
+
*/
|
|
15
|
+
async function resolvePlugins() {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// ---
|
|
20
|
+
|
|
21
|
+
const TAG_TO_PARSER = {
|
|
22
|
+
// CSS
|
|
23
|
+
css: "css",
|
|
24
|
+
styled: "css",
|
|
25
|
+
// GraphQL
|
|
26
|
+
gql: "graphql",
|
|
27
|
+
graphql: "graphql",
|
|
28
|
+
// HTML
|
|
29
|
+
html: "html",
|
|
30
|
+
// Markdown
|
|
31
|
+
md: "markdown",
|
|
32
|
+
markdown: "markdown",
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Format xxx-in-js code snippets
|
|
37
|
+
*
|
|
38
|
+
* @param {Object} param
|
|
39
|
+
* @param {string} param.code
|
|
40
|
+
* @param {string} param.tagName
|
|
41
|
+
* @param {any} param.options
|
|
42
|
+
* @returns {Promise<string>} Formatted code snippet
|
|
43
|
+
*/
|
|
44
|
+
async function formatEmbeddedCode({ code, tagName, options }) {
|
|
45
|
+
// TODO: This should be resolved in Rust side
|
|
46
|
+
const parserName = TAG_TO_PARSER[tagName];
|
|
47
|
+
|
|
48
|
+
// Unknown tag, return original code
|
|
49
|
+
if (!parserName) return code;
|
|
50
|
+
|
|
51
|
+
if (!prettierCache) {
|
|
52
|
+
prettierCache = await import("prettier");
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// SAFETY: `options` is created in Rust side, so it's safe to mutate here
|
|
56
|
+
options.parser = parserName;
|
|
57
|
+
return prettierCache
|
|
58
|
+
.format(code, options)
|
|
59
|
+
.then((formatted) => formatted.trimEnd())
|
|
60
|
+
.catch(() => code);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Format non-js file
|
|
65
|
+
*
|
|
66
|
+
* @param {Object} param
|
|
67
|
+
* @param {string} param.code
|
|
68
|
+
* @param {string} param.parserName
|
|
69
|
+
* @param {string} param.fileName
|
|
70
|
+
* @param {any} param.options
|
|
71
|
+
* @returns {Promise<string>} Formatted code
|
|
72
|
+
*/
|
|
73
|
+
async function formatFile({ code, parserName, fileName, options }) {
|
|
74
|
+
if (!prettierCache) {
|
|
75
|
+
prettierCache = await import("prettier");
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// SAFETY: `options` is created in Rust side, so it's safe to mutate here
|
|
79
|
+
// We specify `parser` to skip parser inference for performance
|
|
80
|
+
options.parser = parserName;
|
|
81
|
+
// But some plugins rely on `filepath`, so we set it too
|
|
82
|
+
options.filepath = fileName;
|
|
83
|
+
return prettierCache.format(code, options);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Format the given source text according to the specified options.
|
|
88
|
+
*
|
|
89
|
+
* This is a convenience wrapper that automatically uses Prettier for external formatter callbacks.
|
|
90
|
+
* For more control, use the raw `format` function from `./index.js` directly.
|
|
91
|
+
*
|
|
92
|
+
* @param {string} fileName - The name of the file to format
|
|
93
|
+
* @param {string} sourceText - The source code to format
|
|
94
|
+
* @param {Record<string, any>} [options] - Optional formatting options (compatible with Prettier options)
|
|
95
|
+
* @returns {Promise<{code: string, errors: string[]}>} A promise that resolves to the formatted code and any errors
|
|
96
|
+
*/
|
|
97
|
+
async function format(fileName, sourceText, options) {
|
|
98
|
+
if (typeof fileName !== "string")
|
|
99
|
+
throw new TypeError("`fileName` must be a string");
|
|
100
|
+
if (typeof sourceText !== "string")
|
|
101
|
+
throw new TypeError("`sourceText` must be a string");
|
|
102
|
+
|
|
103
|
+
return napiFormat(
|
|
104
|
+
fileName,
|
|
105
|
+
sourceText,
|
|
106
|
+
options ?? {},
|
|
107
|
+
resolvePlugins,
|
|
108
|
+
(options, tagName, code) => formatEmbeddedCode({ options, tagName, code }),
|
|
109
|
+
(options, parserName, fileName, code) =>
|
|
110
|
+
formatFile({ options, parserName, fileName, code }),
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Re-export the raw format function for advanced usage
|
|
115
|
+
function formatRaw(
|
|
116
|
+
fileName,
|
|
117
|
+
sourceText,
|
|
118
|
+
options,
|
|
119
|
+
initExternalFormatterCb,
|
|
120
|
+
formatEmbeddedCb,
|
|
121
|
+
formatFileCb,
|
|
122
|
+
) {
|
|
123
|
+
const { format } = require("./index.js");
|
|
124
|
+
return format(
|
|
125
|
+
fileName,
|
|
126
|
+
sourceText,
|
|
127
|
+
options,
|
|
128
|
+
initExternalFormatterCb,
|
|
129
|
+
formatEmbeddedCb,
|
|
130
|
+
formatFileCb,
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
module.exports = { format, formatRaw };
|
|
135
|
+
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* auto-generated by NAPI-RS */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/**
|
|
4
|
+
* Format a file with the given options.
|
|
5
|
+
*
|
|
6
|
+
* This function supports multiple file types:
|
|
7
|
+
* - JavaScript/TypeScript files (via oxc_formatter)
|
|
8
|
+
* - TOML files (via oxc_toml)
|
|
9
|
+
* - Other files (via external formatter callbacks when napi feature is enabled)
|
|
10
|
+
*/
|
|
11
|
+
export declare function format(filename: string, sourceText: string, options?: any | undefined | null, initExternalFormatterCb?: (numThreads: number) => Promise<string[]>, formatEmbeddedCb?: (options: Record<string, any>, tagName: string, code: string) => Promise<string>, formatFileCb?: (options: Record<string, any>, parserName: string, fileName: string, code: string) => Promise<string>): Promise<FormatResult>
|
|
12
|
+
|
|
13
|
+
export interface FormatResult {
|
|
14
|
+
/** The formatted code. */
|
|
15
|
+
code: string
|
|
16
|
+
/** Parse and format errors. */
|
|
17
|
+
errors: Array<string>
|
|
18
|
+
}
|
package/index.js
ADDED
|
@@ -0,0 +1,575 @@
|
|
|
1
|
+
// prettier-ignore
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
// @ts-nocheck
|
|
4
|
+
/* auto-generated by NAPI-RS */
|
|
5
|
+
|
|
6
|
+
const { readFileSync } = require('node:fs')
|
|
7
|
+
let nativeBinding = null
|
|
8
|
+
const loadErrors = []
|
|
9
|
+
|
|
10
|
+
const isMusl = () => {
|
|
11
|
+
let musl = false
|
|
12
|
+
if (process.platform === 'linux') {
|
|
13
|
+
musl = isMuslFromFilesystem()
|
|
14
|
+
if (musl === null) {
|
|
15
|
+
musl = isMuslFromReport()
|
|
16
|
+
}
|
|
17
|
+
if (musl === null) {
|
|
18
|
+
musl = isMuslFromChildProcess()
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return musl
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')
|
|
25
|
+
|
|
26
|
+
const isMuslFromFilesystem = () => {
|
|
27
|
+
try {
|
|
28
|
+
return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')
|
|
29
|
+
} catch {
|
|
30
|
+
return null
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const isMuslFromReport = () => {
|
|
35
|
+
let report = null
|
|
36
|
+
if (typeof process.report?.getReport === 'function') {
|
|
37
|
+
process.report.excludeNetwork = true
|
|
38
|
+
report = process.report.getReport()
|
|
39
|
+
}
|
|
40
|
+
if (!report) {
|
|
41
|
+
return null
|
|
42
|
+
}
|
|
43
|
+
if (report.header && report.header.glibcVersionRuntime) {
|
|
44
|
+
return false
|
|
45
|
+
}
|
|
46
|
+
if (Array.isArray(report.sharedObjects)) {
|
|
47
|
+
if (report.sharedObjects.some(isFileMusl)) {
|
|
48
|
+
return true
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return false
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const isMuslFromChildProcess = () => {
|
|
55
|
+
try {
|
|
56
|
+
return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl')
|
|
57
|
+
} catch (e) {
|
|
58
|
+
// If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false
|
|
59
|
+
return false
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function requireNative() {
|
|
64
|
+
if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) {
|
|
65
|
+
try {
|
|
66
|
+
return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH);
|
|
67
|
+
} catch (err) {
|
|
68
|
+
loadErrors.push(err)
|
|
69
|
+
}
|
|
70
|
+
} else if (process.platform === 'android') {
|
|
71
|
+
if (process.arch === 'arm64') {
|
|
72
|
+
try {
|
|
73
|
+
return require('./oxk.android-arm64.node')
|
|
74
|
+
} catch (e) {
|
|
75
|
+
loadErrors.push(e)
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const binding = require('@ohos-rs/oxk-android-arm64')
|
|
79
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-android-arm64/package.json').version
|
|
80
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
81
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
82
|
+
}
|
|
83
|
+
return binding
|
|
84
|
+
} catch (e) {
|
|
85
|
+
loadErrors.push(e)
|
|
86
|
+
}
|
|
87
|
+
} else if (process.arch === 'arm') {
|
|
88
|
+
try {
|
|
89
|
+
return require('./oxk.android-arm-eabi.node')
|
|
90
|
+
} catch (e) {
|
|
91
|
+
loadErrors.push(e)
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const binding = require('@ohos-rs/oxk-android-arm-eabi')
|
|
95
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-android-arm-eabi/package.json').version
|
|
96
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
97
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
98
|
+
}
|
|
99
|
+
return binding
|
|
100
|
+
} catch (e) {
|
|
101
|
+
loadErrors.push(e)
|
|
102
|
+
}
|
|
103
|
+
} else {
|
|
104
|
+
loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`))
|
|
105
|
+
}
|
|
106
|
+
} else if (process.platform === 'win32') {
|
|
107
|
+
if (process.arch === 'x64') {
|
|
108
|
+
if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') {
|
|
109
|
+
try {
|
|
110
|
+
return require('./oxk.win32-x64-gnu.node')
|
|
111
|
+
} catch (e) {
|
|
112
|
+
loadErrors.push(e)
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const binding = require('@ohos-rs/oxk-win32-x64-gnu')
|
|
116
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-win32-x64-gnu/package.json').version
|
|
117
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
118
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
119
|
+
}
|
|
120
|
+
return binding
|
|
121
|
+
} catch (e) {
|
|
122
|
+
loadErrors.push(e)
|
|
123
|
+
}
|
|
124
|
+
} else {
|
|
125
|
+
try {
|
|
126
|
+
return require('./oxk.win32-x64-msvc.node')
|
|
127
|
+
} catch (e) {
|
|
128
|
+
loadErrors.push(e)
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const binding = require('@ohos-rs/oxk-win32-x64-msvc')
|
|
132
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-win32-x64-msvc/package.json').version
|
|
133
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
134
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
135
|
+
}
|
|
136
|
+
return binding
|
|
137
|
+
} catch (e) {
|
|
138
|
+
loadErrors.push(e)
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
} else if (process.arch === 'ia32') {
|
|
142
|
+
try {
|
|
143
|
+
return require('./oxk.win32-ia32-msvc.node')
|
|
144
|
+
} catch (e) {
|
|
145
|
+
loadErrors.push(e)
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
const binding = require('@ohos-rs/oxk-win32-ia32-msvc')
|
|
149
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-win32-ia32-msvc/package.json').version
|
|
150
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
151
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
152
|
+
}
|
|
153
|
+
return binding
|
|
154
|
+
} catch (e) {
|
|
155
|
+
loadErrors.push(e)
|
|
156
|
+
}
|
|
157
|
+
} else if (process.arch === 'arm64') {
|
|
158
|
+
try {
|
|
159
|
+
return require('./oxk.win32-arm64-msvc.node')
|
|
160
|
+
} catch (e) {
|
|
161
|
+
loadErrors.push(e)
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const binding = require('@ohos-rs/oxk-win32-arm64-msvc')
|
|
165
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-win32-arm64-msvc/package.json').version
|
|
166
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
167
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
168
|
+
}
|
|
169
|
+
return binding
|
|
170
|
+
} catch (e) {
|
|
171
|
+
loadErrors.push(e)
|
|
172
|
+
}
|
|
173
|
+
} else {
|
|
174
|
+
loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`))
|
|
175
|
+
}
|
|
176
|
+
} else if (process.platform === 'darwin') {
|
|
177
|
+
try {
|
|
178
|
+
return require('./oxk.darwin-universal.node')
|
|
179
|
+
} catch (e) {
|
|
180
|
+
loadErrors.push(e)
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
const binding = require('@ohos-rs/oxk-darwin-universal')
|
|
184
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-darwin-universal/package.json').version
|
|
185
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
186
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
187
|
+
}
|
|
188
|
+
return binding
|
|
189
|
+
} catch (e) {
|
|
190
|
+
loadErrors.push(e)
|
|
191
|
+
}
|
|
192
|
+
if (process.arch === 'x64') {
|
|
193
|
+
try {
|
|
194
|
+
return require('./oxk.darwin-x64.node')
|
|
195
|
+
} catch (e) {
|
|
196
|
+
loadErrors.push(e)
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
const binding = require('@ohos-rs/oxk-darwin-x64')
|
|
200
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-darwin-x64/package.json').version
|
|
201
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
202
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
203
|
+
}
|
|
204
|
+
return binding
|
|
205
|
+
} catch (e) {
|
|
206
|
+
loadErrors.push(e)
|
|
207
|
+
}
|
|
208
|
+
} else if (process.arch === 'arm64') {
|
|
209
|
+
try {
|
|
210
|
+
return require('./oxk.darwin-arm64.node')
|
|
211
|
+
} catch (e) {
|
|
212
|
+
loadErrors.push(e)
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const binding = require('@ohos-rs/oxk-darwin-arm64')
|
|
216
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-darwin-arm64/package.json').version
|
|
217
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
218
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
219
|
+
}
|
|
220
|
+
return binding
|
|
221
|
+
} catch (e) {
|
|
222
|
+
loadErrors.push(e)
|
|
223
|
+
}
|
|
224
|
+
} else {
|
|
225
|
+
loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`))
|
|
226
|
+
}
|
|
227
|
+
} else if (process.platform === 'freebsd') {
|
|
228
|
+
if (process.arch === 'x64') {
|
|
229
|
+
try {
|
|
230
|
+
return require('./oxk.freebsd-x64.node')
|
|
231
|
+
} catch (e) {
|
|
232
|
+
loadErrors.push(e)
|
|
233
|
+
}
|
|
234
|
+
try {
|
|
235
|
+
const binding = require('@ohos-rs/oxk-freebsd-x64')
|
|
236
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-freebsd-x64/package.json').version
|
|
237
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
238
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
239
|
+
}
|
|
240
|
+
return binding
|
|
241
|
+
} catch (e) {
|
|
242
|
+
loadErrors.push(e)
|
|
243
|
+
}
|
|
244
|
+
} else if (process.arch === 'arm64') {
|
|
245
|
+
try {
|
|
246
|
+
return require('./oxk.freebsd-arm64.node')
|
|
247
|
+
} catch (e) {
|
|
248
|
+
loadErrors.push(e)
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const binding = require('@ohos-rs/oxk-freebsd-arm64')
|
|
252
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-freebsd-arm64/package.json').version
|
|
253
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
254
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
255
|
+
}
|
|
256
|
+
return binding
|
|
257
|
+
} catch (e) {
|
|
258
|
+
loadErrors.push(e)
|
|
259
|
+
}
|
|
260
|
+
} else {
|
|
261
|
+
loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`))
|
|
262
|
+
}
|
|
263
|
+
} else if (process.platform === 'linux') {
|
|
264
|
+
if (process.arch === 'x64') {
|
|
265
|
+
if (isMusl()) {
|
|
266
|
+
try {
|
|
267
|
+
return require('./oxk.linux-x64-musl.node')
|
|
268
|
+
} catch (e) {
|
|
269
|
+
loadErrors.push(e)
|
|
270
|
+
}
|
|
271
|
+
try {
|
|
272
|
+
const binding = require('@ohos-rs/oxk-linux-x64-musl')
|
|
273
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-linux-x64-musl/package.json').version
|
|
274
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
275
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
276
|
+
}
|
|
277
|
+
return binding
|
|
278
|
+
} catch (e) {
|
|
279
|
+
loadErrors.push(e)
|
|
280
|
+
}
|
|
281
|
+
} else {
|
|
282
|
+
try {
|
|
283
|
+
return require('./oxk.linux-x64-gnu.node')
|
|
284
|
+
} catch (e) {
|
|
285
|
+
loadErrors.push(e)
|
|
286
|
+
}
|
|
287
|
+
try {
|
|
288
|
+
const binding = require('@ohos-rs/oxk-linux-x64-gnu')
|
|
289
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-linux-x64-gnu/package.json').version
|
|
290
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
291
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
292
|
+
}
|
|
293
|
+
return binding
|
|
294
|
+
} catch (e) {
|
|
295
|
+
loadErrors.push(e)
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
} else if (process.arch === 'arm64') {
|
|
299
|
+
if (isMusl()) {
|
|
300
|
+
try {
|
|
301
|
+
return require('./oxk.linux-arm64-musl.node')
|
|
302
|
+
} catch (e) {
|
|
303
|
+
loadErrors.push(e)
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
const binding = require('@ohos-rs/oxk-linux-arm64-musl')
|
|
307
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-linux-arm64-musl/package.json').version
|
|
308
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
309
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
310
|
+
}
|
|
311
|
+
return binding
|
|
312
|
+
} catch (e) {
|
|
313
|
+
loadErrors.push(e)
|
|
314
|
+
}
|
|
315
|
+
} else {
|
|
316
|
+
try {
|
|
317
|
+
return require('./oxk.linux-arm64-gnu.node')
|
|
318
|
+
} catch (e) {
|
|
319
|
+
loadErrors.push(e)
|
|
320
|
+
}
|
|
321
|
+
try {
|
|
322
|
+
const binding = require('@ohos-rs/oxk-linux-arm64-gnu')
|
|
323
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-linux-arm64-gnu/package.json').version
|
|
324
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
325
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
326
|
+
}
|
|
327
|
+
return binding
|
|
328
|
+
} catch (e) {
|
|
329
|
+
loadErrors.push(e)
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
} else if (process.arch === 'arm') {
|
|
333
|
+
if (isMusl()) {
|
|
334
|
+
try {
|
|
335
|
+
return require('./oxk.linux-arm-musleabihf.node')
|
|
336
|
+
} catch (e) {
|
|
337
|
+
loadErrors.push(e)
|
|
338
|
+
}
|
|
339
|
+
try {
|
|
340
|
+
const binding = require('@ohos-rs/oxk-linux-arm-musleabihf')
|
|
341
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-linux-arm-musleabihf/package.json').version
|
|
342
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
343
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
344
|
+
}
|
|
345
|
+
return binding
|
|
346
|
+
} catch (e) {
|
|
347
|
+
loadErrors.push(e)
|
|
348
|
+
}
|
|
349
|
+
} else {
|
|
350
|
+
try {
|
|
351
|
+
return require('./oxk.linux-arm-gnueabihf.node')
|
|
352
|
+
} catch (e) {
|
|
353
|
+
loadErrors.push(e)
|
|
354
|
+
}
|
|
355
|
+
try {
|
|
356
|
+
const binding = require('@ohos-rs/oxk-linux-arm-gnueabihf')
|
|
357
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-linux-arm-gnueabihf/package.json').version
|
|
358
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
359
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
360
|
+
}
|
|
361
|
+
return binding
|
|
362
|
+
} catch (e) {
|
|
363
|
+
loadErrors.push(e)
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
} else if (process.arch === 'loong64') {
|
|
367
|
+
if (isMusl()) {
|
|
368
|
+
try {
|
|
369
|
+
return require('./oxk.linux-loong64-musl.node')
|
|
370
|
+
} catch (e) {
|
|
371
|
+
loadErrors.push(e)
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
const binding = require('@ohos-rs/oxk-linux-loong64-musl')
|
|
375
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-linux-loong64-musl/package.json').version
|
|
376
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
377
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
378
|
+
}
|
|
379
|
+
return binding
|
|
380
|
+
} catch (e) {
|
|
381
|
+
loadErrors.push(e)
|
|
382
|
+
}
|
|
383
|
+
} else {
|
|
384
|
+
try {
|
|
385
|
+
return require('./oxk.linux-loong64-gnu.node')
|
|
386
|
+
} catch (e) {
|
|
387
|
+
loadErrors.push(e)
|
|
388
|
+
}
|
|
389
|
+
try {
|
|
390
|
+
const binding = require('@ohos-rs/oxk-linux-loong64-gnu')
|
|
391
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-linux-loong64-gnu/package.json').version
|
|
392
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
393
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
394
|
+
}
|
|
395
|
+
return binding
|
|
396
|
+
} catch (e) {
|
|
397
|
+
loadErrors.push(e)
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
} else if (process.arch === 'riscv64') {
|
|
401
|
+
if (isMusl()) {
|
|
402
|
+
try {
|
|
403
|
+
return require('./oxk.linux-riscv64-musl.node')
|
|
404
|
+
} catch (e) {
|
|
405
|
+
loadErrors.push(e)
|
|
406
|
+
}
|
|
407
|
+
try {
|
|
408
|
+
const binding = require('@ohos-rs/oxk-linux-riscv64-musl')
|
|
409
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-linux-riscv64-musl/package.json').version
|
|
410
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
411
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
412
|
+
}
|
|
413
|
+
return binding
|
|
414
|
+
} catch (e) {
|
|
415
|
+
loadErrors.push(e)
|
|
416
|
+
}
|
|
417
|
+
} else {
|
|
418
|
+
try {
|
|
419
|
+
return require('./oxk.linux-riscv64-gnu.node')
|
|
420
|
+
} catch (e) {
|
|
421
|
+
loadErrors.push(e)
|
|
422
|
+
}
|
|
423
|
+
try {
|
|
424
|
+
const binding = require('@ohos-rs/oxk-linux-riscv64-gnu')
|
|
425
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-linux-riscv64-gnu/package.json').version
|
|
426
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
427
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
428
|
+
}
|
|
429
|
+
return binding
|
|
430
|
+
} catch (e) {
|
|
431
|
+
loadErrors.push(e)
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
} else if (process.arch === 'ppc64') {
|
|
435
|
+
try {
|
|
436
|
+
return require('./oxk.linux-ppc64-gnu.node')
|
|
437
|
+
} catch (e) {
|
|
438
|
+
loadErrors.push(e)
|
|
439
|
+
}
|
|
440
|
+
try {
|
|
441
|
+
const binding = require('@ohos-rs/oxk-linux-ppc64-gnu')
|
|
442
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-linux-ppc64-gnu/package.json').version
|
|
443
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
444
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
445
|
+
}
|
|
446
|
+
return binding
|
|
447
|
+
} catch (e) {
|
|
448
|
+
loadErrors.push(e)
|
|
449
|
+
}
|
|
450
|
+
} else if (process.arch === 's390x') {
|
|
451
|
+
try {
|
|
452
|
+
return require('./oxk.linux-s390x-gnu.node')
|
|
453
|
+
} catch (e) {
|
|
454
|
+
loadErrors.push(e)
|
|
455
|
+
}
|
|
456
|
+
try {
|
|
457
|
+
const binding = require('@ohos-rs/oxk-linux-s390x-gnu')
|
|
458
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-linux-s390x-gnu/package.json').version
|
|
459
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
460
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
461
|
+
}
|
|
462
|
+
return binding
|
|
463
|
+
} catch (e) {
|
|
464
|
+
loadErrors.push(e)
|
|
465
|
+
}
|
|
466
|
+
} else {
|
|
467
|
+
loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`))
|
|
468
|
+
}
|
|
469
|
+
} else if (process.platform === 'openharmony') {
|
|
470
|
+
if (process.arch === 'arm64') {
|
|
471
|
+
try {
|
|
472
|
+
return require('./oxk.openharmony-arm64.node')
|
|
473
|
+
} catch (e) {
|
|
474
|
+
loadErrors.push(e)
|
|
475
|
+
}
|
|
476
|
+
try {
|
|
477
|
+
const binding = require('@ohos-rs/oxk-openharmony-arm64')
|
|
478
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-openharmony-arm64/package.json').version
|
|
479
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
480
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
481
|
+
}
|
|
482
|
+
return binding
|
|
483
|
+
} catch (e) {
|
|
484
|
+
loadErrors.push(e)
|
|
485
|
+
}
|
|
486
|
+
} else if (process.arch === 'x64') {
|
|
487
|
+
try {
|
|
488
|
+
return require('./oxk.openharmony-x64.node')
|
|
489
|
+
} catch (e) {
|
|
490
|
+
loadErrors.push(e)
|
|
491
|
+
}
|
|
492
|
+
try {
|
|
493
|
+
const binding = require('@ohos-rs/oxk-openharmony-x64')
|
|
494
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-openharmony-x64/package.json').version
|
|
495
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
496
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
497
|
+
}
|
|
498
|
+
return binding
|
|
499
|
+
} catch (e) {
|
|
500
|
+
loadErrors.push(e)
|
|
501
|
+
}
|
|
502
|
+
} else if (process.arch === 'arm') {
|
|
503
|
+
try {
|
|
504
|
+
return require('./oxk.openharmony-arm.node')
|
|
505
|
+
} catch (e) {
|
|
506
|
+
loadErrors.push(e)
|
|
507
|
+
}
|
|
508
|
+
try {
|
|
509
|
+
const binding = require('@ohos-rs/oxk-openharmony-arm')
|
|
510
|
+
const bindingPackageVersion = require('@ohos-rs/oxk-openharmony-arm/package.json').version
|
|
511
|
+
if (bindingPackageVersion !== '0.0.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
512
|
+
throw new Error(`Native binding package version mismatch, expected 0.0.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
513
|
+
}
|
|
514
|
+
return binding
|
|
515
|
+
} catch (e) {
|
|
516
|
+
loadErrors.push(e)
|
|
517
|
+
}
|
|
518
|
+
} else {
|
|
519
|
+
loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`))
|
|
520
|
+
}
|
|
521
|
+
} else {
|
|
522
|
+
loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`))
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
nativeBinding = requireNative()
|
|
527
|
+
|
|
528
|
+
if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
|
|
529
|
+
let wasiBinding = null
|
|
530
|
+
let wasiBindingError = null
|
|
531
|
+
try {
|
|
532
|
+
wasiBinding = require('./oxk.wasi.cjs')
|
|
533
|
+
nativeBinding = wasiBinding
|
|
534
|
+
} catch (err) {
|
|
535
|
+
if (process.env.NAPI_RS_FORCE_WASI) {
|
|
536
|
+
wasiBindingError = err
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
if (!nativeBinding) {
|
|
540
|
+
try {
|
|
541
|
+
wasiBinding = require('@ohos-rs/oxk-wasm32-wasi')
|
|
542
|
+
nativeBinding = wasiBinding
|
|
543
|
+
} catch (err) {
|
|
544
|
+
if (process.env.NAPI_RS_FORCE_WASI) {
|
|
545
|
+
wasiBindingError.cause = err
|
|
546
|
+
loadErrors.push(err)
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) {
|
|
551
|
+
const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error')
|
|
552
|
+
error.cause = wasiBindingError
|
|
553
|
+
throw error
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
if (!nativeBinding) {
|
|
558
|
+
if (loadErrors.length > 0) {
|
|
559
|
+
throw new Error(
|
|
560
|
+
`Cannot find native binding. ` +
|
|
561
|
+
`npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` +
|
|
562
|
+
'Please try `npm i` again after removing both package-lock.json and node_modules directory.',
|
|
563
|
+
{
|
|
564
|
+
cause: loadErrors.reduce((err, cur) => {
|
|
565
|
+
cur.cause = err
|
|
566
|
+
return cur
|
|
567
|
+
}),
|
|
568
|
+
},
|
|
569
|
+
)
|
|
570
|
+
}
|
|
571
|
+
throw new Error(`Failed to load native binding`)
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
module.exports = nativeBinding
|
|
575
|
+
module.exports.format = nativeBinding.format
|
package/package.json
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ohos-rs/oxk",
|
|
3
|
+
"version": "0.0.1-beta.0",
|
|
4
|
+
"description": "An ArkTS/ArkUI tool based on oxc",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"types": "index.d.ts",
|
|
7
|
+
"browser": "browser.js",
|
|
8
|
+
"bin": {
|
|
9
|
+
"oxk": "./bin/oxk.js"
|
|
10
|
+
},
|
|
11
|
+
"repository": {
|
|
12
|
+
"url": "git+git@github.com:ohos-rs/oxc-ark.git",
|
|
13
|
+
"type": "git"
|
|
14
|
+
},
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"keywords": [
|
|
17
|
+
"napi-rs",
|
|
18
|
+
"NAPI",
|
|
19
|
+
"N-API",
|
|
20
|
+
"Rust",
|
|
21
|
+
"node-addon",
|
|
22
|
+
"node-addon-api"
|
|
23
|
+
],
|
|
24
|
+
"files": [
|
|
25
|
+
"index.d.ts",
|
|
26
|
+
"index.js",
|
|
27
|
+
"browser.js",
|
|
28
|
+
"format.js",
|
|
29
|
+
"format.d.ts",
|
|
30
|
+
"bin"
|
|
31
|
+
],
|
|
32
|
+
"exports": {
|
|
33
|
+
".": {
|
|
34
|
+
"types": "./index.d.ts",
|
|
35
|
+
"default": "./index.js"
|
|
36
|
+
},
|
|
37
|
+
"./format": {
|
|
38
|
+
"types": "./format.d.ts",
|
|
39
|
+
"default": "./format.js"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"napi": {
|
|
43
|
+
"binaryName": "oxk",
|
|
44
|
+
"targets": [
|
|
45
|
+
"x86_64-apple-darwin",
|
|
46
|
+
"aarch64-apple-darwin",
|
|
47
|
+
"x86_64-unknown-linux-gnu",
|
|
48
|
+
"x86_64-pc-windows-msvc",
|
|
49
|
+
"x86_64-unknown-linux-musl",
|
|
50
|
+
"aarch64-unknown-linux-gnu",
|
|
51
|
+
"i686-pc-windows-msvc",
|
|
52
|
+
"armv7-unknown-linux-gnueabihf",
|
|
53
|
+
"aarch64-linux-android",
|
|
54
|
+
"x86_64-unknown-freebsd",
|
|
55
|
+
"aarch64-unknown-linux-musl",
|
|
56
|
+
"aarch64-pc-windows-msvc",
|
|
57
|
+
"armv7-linux-androideabi",
|
|
58
|
+
"wasm32-wasi-preview1-threads"
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"engines": {
|
|
62
|
+
"node": ">= 10"
|
|
63
|
+
},
|
|
64
|
+
"publishConfig": {
|
|
65
|
+
"registry": "https://registry.npmjs.org/",
|
|
66
|
+
"access": "public"
|
|
67
|
+
},
|
|
68
|
+
"scripts": {
|
|
69
|
+
"artifacts": "napi artifacts",
|
|
70
|
+
"bench": "node --import @oxc-node/core/register benchmark/bench.ts",
|
|
71
|
+
"build": "napi build --platform --release",
|
|
72
|
+
"build:debug": "napi build --platform",
|
|
73
|
+
"format": "run-p format:prettier format:rs format:toml",
|
|
74
|
+
"format:prettier": "prettier . -w",
|
|
75
|
+
"format:toml": "taplo format",
|
|
76
|
+
"format:rs": "cargo fmt",
|
|
77
|
+
"lint": "oxlint",
|
|
78
|
+
"prepublishOnly": "napi prepublish -t npm",
|
|
79
|
+
"test": "ava",
|
|
80
|
+
"version": "napi version"
|
|
81
|
+
},
|
|
82
|
+
"dependencies": {
|
|
83
|
+
"glob": "^11.0.0",
|
|
84
|
+
"prettier": "^3.7.4"
|
|
85
|
+
},
|
|
86
|
+
"devDependencies": {
|
|
87
|
+
"@emnapi/core": "^1.5.0",
|
|
88
|
+
"@emnapi/runtime": "^1.5.0",
|
|
89
|
+
"@napi-rs/cli": "^3.2.0",
|
|
90
|
+
"@napi-rs/wasm-runtime": "^1.0.4",
|
|
91
|
+
"@oxc-node/core": "^0.0.35",
|
|
92
|
+
"@tybys/wasm-util": "^0.10.0",
|
|
93
|
+
"ava": "^6.4.1",
|
|
94
|
+
"chalk": "^5.6.2",
|
|
95
|
+
"emnapi": "^1.5.0",
|
|
96
|
+
"husky": "^9.1.7",
|
|
97
|
+
"lint-staged": "^16.1.6",
|
|
98
|
+
"npm-run-all2": "^8.0.4",
|
|
99
|
+
"oxlint": "^1.14.0",
|
|
100
|
+
"tinybench": "^6.0.0",
|
|
101
|
+
"typescript": "^5.9.2"
|
|
102
|
+
},
|
|
103
|
+
"ava": {
|
|
104
|
+
"files": [
|
|
105
|
+
"__test__/**/*.spec.ts"
|
|
106
|
+
],
|
|
107
|
+
"extensions": {
|
|
108
|
+
"ts": "module"
|
|
109
|
+
},
|
|
110
|
+
"timeout": "2m",
|
|
111
|
+
"workerThreads": false,
|
|
112
|
+
"environmentVariables": {
|
|
113
|
+
"TS_NODE_PROJECT": "./tsconfig.json"
|
|
114
|
+
},
|
|
115
|
+
"nodeArguments": [
|
|
116
|
+
"--import",
|
|
117
|
+
"@oxc-node/core/register"
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
"optionalDependencies": {
|
|
121
|
+
"@ohos-rs/oxk-darwin-x64": "0.0.1-beta.0",
|
|
122
|
+
"@ohos-rs/oxk-darwin-arm64": "0.0.1-beta.0",
|
|
123
|
+
"@ohos-rs/oxk-linux-x64-gnu": "0.0.1-beta.0",
|
|
124
|
+
"@ohos-rs/oxk-win32-x64-msvc": "0.0.1-beta.0",
|
|
125
|
+
"@ohos-rs/oxk-linux-x64-musl": "0.0.1-beta.0",
|
|
126
|
+
"@ohos-rs/oxk-linux-arm64-gnu": "0.0.1-beta.0",
|
|
127
|
+
"@ohos-rs/oxk-win32-ia32-msvc": "0.0.1-beta.0",
|
|
128
|
+
"@ohos-rs/oxk-linux-arm-gnueabihf": "0.0.1-beta.0",
|
|
129
|
+
"@ohos-rs/oxk-android-arm64": "0.0.1-beta.0",
|
|
130
|
+
"@ohos-rs/oxk-freebsd-x64": "0.0.1-beta.0",
|
|
131
|
+
"@ohos-rs/oxk-linux-arm64-musl": "0.0.1-beta.0",
|
|
132
|
+
"@ohos-rs/oxk-win32-arm64-msvc": "0.0.1-beta.0",
|
|
133
|
+
"@ohos-rs/oxk-android-arm-eabi": "0.0.1-beta.0",
|
|
134
|
+
"@ohos-rs/oxk-wasm32-wasi": "0.0.1-beta.0"
|
|
135
|
+
}
|
|
136
|
+
}
|