koffi 2.8.8 → 2.8.10
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/CHANGELOG.md +8 -0
- package/build/koffi/darwin_arm64/koffi.node +0 -0
- package/build/koffi/darwin_x64/koffi.node +0 -0
- package/build/koffi/freebsd_arm64/koffi.node +0 -0
- package/build/koffi/freebsd_ia32/koffi.node +0 -0
- package/build/koffi/freebsd_x64/koffi.node +0 -0
- package/build/koffi/linux_arm64/koffi.node +0 -0
- package/build/koffi/linux_armhf/koffi.node +0 -0
- package/build/koffi/linux_ia32/koffi.node +0 -0
- package/build/koffi/linux_riscv64d/koffi.node +0 -0
- package/build/koffi/linux_x64/koffi.node +0 -0
- package/build/koffi/openbsd_ia32/koffi.node +0 -0
- package/build/koffi/openbsd_x64/koffi.node +0 -0
- package/build/koffi/win32_arm64/koffi.exp +0 -0
- package/build/koffi/win32_arm64/koffi.lib +0 -0
- package/build/koffi/win32_arm64/koffi.node +0 -0
- package/build/koffi/win32_ia32/koffi.exp +0 -0
- package/build/koffi/win32_ia32/koffi.lib +0 -0
- package/build/koffi/win32_ia32/koffi.node +0 -0
- package/build/koffi/win32_x64/koffi.exp +0 -0
- package/build/koffi/win32_x64/koffi.lib +0 -0
- package/build/koffi/win32_x64/koffi.node +0 -0
- package/index.js +28 -48
- package/indirect.js +24 -44
- package/package.json +5 -3
- package/src/cnoke/assets/FindCNoke.cmake +16 -3
- package/src/cnoke/src/builder.js +109 -102
- package/src/cnoke/src/tools.js +5 -23
- package/src/koffi/CMakeLists.txt +1 -1
- package/src/koffi/src/abi_arm32.cc +1 -1
- package/src/koffi/src/abi_arm64.cc +1 -1
- package/src/koffi/src/abi_riscv64.cc +1 -1
- package/src/koffi/src/abi_x64_sysv.cc +1 -1
- package/src/koffi/src/abi_x64_win.cc +1 -1
- package/src/koffi/src/abi_x86.cc +1 -1
- package/vendor/node-api-headers/CHANGELOG.md +79 -0
- package/vendor/node-api-headers/CODE_OF_CONDUCT.md +4 -0
- package/vendor/node-api-headers/CONTRIBUTING.md +32 -0
- package/vendor/node-api-headers/CREATING_A_RELEASE.md +58 -0
- package/vendor/node-api-headers/LICENSE +21 -0
- package/vendor/node-api-headers/README.md +106 -0
- package/vendor/node-api-headers/def/js_native_api.def +120 -0
- package/vendor/node-api-headers/def/node_api.def +151 -0
- package/vendor/node-api-headers/include/js_native_api.h +569 -0
- package/vendor/node-api-headers/include/js_native_api_types.h +168 -0
- package/vendor/node-api-headers/include/node_api.h +260 -0
- package/vendor/node-api-headers/include/node_api_types.h +52 -0
- package/vendor/node-api-headers/index.js +17 -0
- package/vendor/node-api-headers/package.json +59 -0
- package/vendor/node-api-headers/scripts/clang-utils.js +50 -0
- package/vendor/node-api-headers/scripts/update-headers.js +189 -0
- package/vendor/node-api-headers/scripts/write-symbols.js +154 -0
- package/vendor/node-api-headers/scripts/write-win32-def.js +52 -0
- package/vendor/node-api-headers/symbols.js +241 -0
- package/build/koffi/linux_arm32hf/koffi.node +0 -0
- package/build/koffi/linux_riscv64hf64/koffi.node +0 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { writeFile } = require('fs/promises');
|
|
4
|
+
const { Readable } = require('stream');
|
|
5
|
+
const { resolve } = require('path');
|
|
6
|
+
const { parseArgs } = require('util')
|
|
7
|
+
const { createInterface } = require('readline');
|
|
8
|
+
const { inspect } = require('util');
|
|
9
|
+
const { runClang } = require('./clang-utils');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @returns {Promise<string>} Version string, eg. `'v19.6.0'`.
|
|
13
|
+
*/
|
|
14
|
+
async function getLatestReleaseVersion() {
|
|
15
|
+
const response = await fetch('https://nodejs.org/download/release/index.json');
|
|
16
|
+
const json = await response.json();
|
|
17
|
+
return json[0].version;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @param {NodeJS.ReadableStream} stream
|
|
22
|
+
* @param {string} destination
|
|
23
|
+
* @param {boolean} verbose
|
|
24
|
+
* @returns {Promise<void>} The `writeFile` Promise.
|
|
25
|
+
*/
|
|
26
|
+
function removeExperimentals(stream, destination, verbose = false) {
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
const debug = (...args) => {
|
|
29
|
+
if (verbose) {
|
|
30
|
+
console.log(...args);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const rl = createInterface(stream);
|
|
34
|
+
|
|
35
|
+
/** @type {Array<'write' | 'ignore'>} */
|
|
36
|
+
let mode = ['write'];
|
|
37
|
+
|
|
38
|
+
/** @type {Array<string>} */
|
|
39
|
+
const macroStack = [];
|
|
40
|
+
|
|
41
|
+
/** @type {RegExpMatchArray | null} */
|
|
42
|
+
let matches;
|
|
43
|
+
|
|
44
|
+
let lineNumber = 0;
|
|
45
|
+
let toWrite = '';
|
|
46
|
+
|
|
47
|
+
rl.on('line', function lineHandler(line) {
|
|
48
|
+
++lineNumber;
|
|
49
|
+
if (matches = line.match(/^\s*#if(n)?def\s+([A-Za-z_][A-Za-z0-9_]*)/)) {
|
|
50
|
+
const negated = Boolean(matches[1]);
|
|
51
|
+
const identifier = matches[2];
|
|
52
|
+
macroStack.push(identifier);
|
|
53
|
+
|
|
54
|
+
debug(`Line ${lineNumber} Pushed ${identifier}`);
|
|
55
|
+
|
|
56
|
+
if (identifier === 'NAPI_EXPERIMENTAL') {
|
|
57
|
+
if (negated) {
|
|
58
|
+
mode.push('write');
|
|
59
|
+
} else {
|
|
60
|
+
mode.push('ignore');
|
|
61
|
+
}
|
|
62
|
+
return;
|
|
63
|
+
} else {
|
|
64
|
+
mode.push('write');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
else if (matches = line.match(/^\s*#if\s+(.+)$/)) {
|
|
69
|
+
const identifier = matches[1];
|
|
70
|
+
macroStack.push(identifier);
|
|
71
|
+
mode.push('write');
|
|
72
|
+
|
|
73
|
+
debug(`Line ${lineNumber} Pushed ${identifier}`);
|
|
74
|
+
}
|
|
75
|
+
else if (line.match(/^#else(?:\s+|$)/)) {
|
|
76
|
+
const identifier = macroStack[macroStack.length - 1];
|
|
77
|
+
|
|
78
|
+
debug(`Line ${lineNumber} Peeked ${identifier}`);
|
|
79
|
+
|
|
80
|
+
if (!identifier) {
|
|
81
|
+
rl.off('line', lineHandler);
|
|
82
|
+
reject(new Error(`Macro stack is empty handling #else on line ${lineNumber}`));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (identifier === 'NAPI_EXPERIMENTAL') {
|
|
87
|
+
const lastMode = mode[mode.length - 1];
|
|
88
|
+
mode[mode.length - 1] = (lastMode === 'ignore') ? 'write' : 'ignore';
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else if (line.match(/^\s*#endif(?:\s+|$)/)) {
|
|
93
|
+
const identifier = macroStack.pop();
|
|
94
|
+
mode.pop();
|
|
95
|
+
|
|
96
|
+
debug(`Line ${lineNumber} Popped ${identifier}`);
|
|
97
|
+
|
|
98
|
+
if (!identifier) {
|
|
99
|
+
rl.off('line', lineHandler);
|
|
100
|
+
reject(new Error(`Macro stack is empty handling #endif on line ${lineNumber}`));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (identifier === 'NAPI_EXPERIMENTAL') {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (mode.length === 0) {
|
|
109
|
+
rl.off('line', lineHandler);
|
|
110
|
+
reject(new Error(`Write mode empty handling #endif on line ${lineNumber}`));
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (mode[mode.length - 1] === 'write') {
|
|
115
|
+
toWrite += `${line}\n`;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
rl.on('close', () => {
|
|
120
|
+
if (macroStack.length > 0) {
|
|
121
|
+
reject(new Error(`Macro stack is not empty at EOF: ${inspect(macroStack)}`));
|
|
122
|
+
}
|
|
123
|
+
else if (mode.length > 1) {
|
|
124
|
+
reject(new Error(`Write mode greater than 1 at EOF: ${inspect(mode)}`));
|
|
125
|
+
}
|
|
126
|
+
else if (toWrite.match(/^\s*#if(?:n)?def\s+NAPI_EXPERIMENTAL/m)) {
|
|
127
|
+
reject(new Error(`Output has match for NAPI_EXPERIMENTAL`));
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
resolve(writeFile(destination, toWrite));
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Validate syntax for a file using clang.
|
|
138
|
+
* @param {string} path Path for file to validate with clang.
|
|
139
|
+
*/
|
|
140
|
+
async function validateSyntax(path) {
|
|
141
|
+
try {
|
|
142
|
+
await runClang(['-fsyntax-only', path]);
|
|
143
|
+
} catch (e) {
|
|
144
|
+
throw new Error(`Syntax validation failed for ${path}: ${e}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
async function main() {
|
|
149
|
+
const { values: { tag, verbose } } = parseArgs({
|
|
150
|
+
options: {
|
|
151
|
+
tag: {
|
|
152
|
+
type: 'string',
|
|
153
|
+
short: 't',
|
|
154
|
+
default: await getLatestReleaseVersion()
|
|
155
|
+
},
|
|
156
|
+
verbose: {
|
|
157
|
+
type: 'boolean',
|
|
158
|
+
short: 'v',
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
console.log(`Update headers from nodejs/node tag ${tag}`);
|
|
164
|
+
|
|
165
|
+
const files = ['js_native_api_types.h', 'js_native_api.h', 'node_api_types.h', 'node_api.h'];
|
|
166
|
+
|
|
167
|
+
for (const filename of files) {
|
|
168
|
+
const url = `https://raw.githubusercontent.com/nodejs/node/${tag}/src/${filename}`;
|
|
169
|
+
const path = resolve(__dirname, '..', 'include', filename);
|
|
170
|
+
|
|
171
|
+
if (verbose) {
|
|
172
|
+
console.log(` ${url} -> ${path}`);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const response = await fetch(url);
|
|
176
|
+
if (!response.ok) {
|
|
177
|
+
throw new Error(`Fetch of ${url} returned ${response.status} ${response.statusText}`);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
await removeExperimentals(Readable.fromWeb(response.body), path, verbose);
|
|
181
|
+
|
|
182
|
+
await validateSyntax(path);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
main().catch(e => {
|
|
187
|
+
console.error(e);
|
|
188
|
+
process.exitCode = 1;
|
|
189
|
+
});
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { resolve: resolvePath } = require('path');
|
|
4
|
+
const { writeFile } = require('fs/promises');
|
|
5
|
+
const { runClang } = require('./clang-utils');
|
|
6
|
+
|
|
7
|
+
/** @typedef {{ js_native_api_symbols: string[]; node_api_symbols: string[]; }} SymbolInfo */
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @param {number} [version]
|
|
11
|
+
* @returns {Promise<SymbolInfo>}
|
|
12
|
+
*/
|
|
13
|
+
async function getSymbolsForVersion(version) {
|
|
14
|
+
try {
|
|
15
|
+
const { stdout } = await runClang([ '-ast-dump=json', '-fsyntax-only', '-fno-diagnostics-color', `-DNAPI_VERSION=${version}`, resolvePath(__dirname, '..', 'include', 'node_api.h')])
|
|
16
|
+
|
|
17
|
+
const ast = JSON.parse(stdout);
|
|
18
|
+
|
|
19
|
+
/** @type {SymbolInfo} */
|
|
20
|
+
const symbols = { js_native_api_symbols: [], node_api_symbols: [] };
|
|
21
|
+
|
|
22
|
+
for (const statement of ast.inner) {
|
|
23
|
+
if (statement.kind !== 'FunctionDecl') {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const name = statement.name;
|
|
28
|
+
const file = statement.loc.includedFrom?.file;
|
|
29
|
+
|
|
30
|
+
if (file) {
|
|
31
|
+
symbols.js_native_api_symbols.push(name);
|
|
32
|
+
} else {
|
|
33
|
+
symbols.node_api_symbols.push(name);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
symbols.js_native_api_symbols.sort();
|
|
38
|
+
symbols.node_api_symbols.sort();
|
|
39
|
+
|
|
40
|
+
return symbols;
|
|
41
|
+
} catch (err) {
|
|
42
|
+
if (err.code === 'ENOENT') {
|
|
43
|
+
throw new Error('This tool requires clang to be installed.');
|
|
44
|
+
}
|
|
45
|
+
throw err;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** @returns {Promise<{maxVersion: number, symbols: {[x: string]: SymbolInfo}}>} */
|
|
50
|
+
async function getAllSymbols() {
|
|
51
|
+
/** @type {{[x: string]: SymbolInfo}} */
|
|
52
|
+
const allSymbols = {};
|
|
53
|
+
let version = 1;
|
|
54
|
+
|
|
55
|
+
console.log('Processing symbols from clang:')
|
|
56
|
+
while (true) {
|
|
57
|
+
const symbols = await getSymbolsForVersion(version);
|
|
58
|
+
|
|
59
|
+
if (version > 1) {
|
|
60
|
+
const previousSymbols = allSymbols[`v${version - 1}`];
|
|
61
|
+
if (previousSymbols.js_native_api_symbols.length == symbols.js_native_api_symbols.length && previousSymbols.node_api_symbols.length === symbols.node_api_symbols.length) {
|
|
62
|
+
--version;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
allSymbols[`v${version}`] = symbols;
|
|
67
|
+
console.log(` v${version}: ${symbols.js_native_api_symbols.length} js_native_api_symbols, ${symbols.node_api_symbols.length} node_api_symbols`);
|
|
68
|
+
++version;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return {
|
|
72
|
+
maxVersion: version,
|
|
73
|
+
symbols: allSymbols
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @param {SymbolInfo} previousSymbols
|
|
79
|
+
* @param {SymbolInfo} currentSymbols
|
|
80
|
+
* @returns {SymbolInfo}
|
|
81
|
+
*/
|
|
82
|
+
function getUniqueSymbols(previousSymbols, currentSymbols) {
|
|
83
|
+
/** @type {SymbolInfo} */
|
|
84
|
+
const symbols = { js_native_api_symbols: [], node_api_symbols: [] };
|
|
85
|
+
for (const symbol of currentSymbols.js_native_api_symbols) {
|
|
86
|
+
if (!previousSymbols.js_native_api_symbols.includes(symbol)) {
|
|
87
|
+
symbols.js_native_api_symbols.push(symbol);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
for (const symbol of currentSymbols.node_api_symbols) {
|
|
91
|
+
if (!previousSymbols.node_api_symbols.includes(symbol)) {
|
|
92
|
+
symbols.node_api_symbols.push(symbol);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return symbols;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* @param {string[]} strings
|
|
100
|
+
*/
|
|
101
|
+
function joinStrings(strings, prependNewLine = false) {
|
|
102
|
+
if (strings.length === 0) return '';
|
|
103
|
+
return `${prependNewLine ? ',\n ' : ''}'${strings.join("',\n '")}'`;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
async function getSymbolData() {
|
|
107
|
+
const { maxVersion, symbols } = await getAllSymbols();
|
|
108
|
+
|
|
109
|
+
let data = `'use strict'
|
|
110
|
+
|
|
111
|
+
const v1 = {
|
|
112
|
+
js_native_api_symbols: [
|
|
113
|
+
${joinStrings(symbols.v1.js_native_api_symbols)}
|
|
114
|
+
],
|
|
115
|
+
node_api_symbols: [
|
|
116
|
+
${joinStrings(symbols.v1.node_api_symbols)}
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
`;
|
|
120
|
+
|
|
121
|
+
for (let version = 2; version <= maxVersion; ++version) {
|
|
122
|
+
const newSymbols = getUniqueSymbols(symbols[`v${version - 1}`], symbols[`v${version}`]);
|
|
123
|
+
|
|
124
|
+
data += `
|
|
125
|
+
const v${version} = {
|
|
126
|
+
js_native_api_symbols: [
|
|
127
|
+
...v${version - 1}.js_native_api_symbols${joinStrings(newSymbols.js_native_api_symbols, true)}
|
|
128
|
+
],
|
|
129
|
+
node_api_symbols: [
|
|
130
|
+
...v${version - 1}.node_api_symbols${joinStrings(newSymbols.node_api_symbols, true)}
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
`;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
data += `
|
|
137
|
+
module.exports = {
|
|
138
|
+
${new Array(maxVersion).fill(undefined).map((_, i) => `v${i + 1}`).join(',\n ')}
|
|
139
|
+
}
|
|
140
|
+
`
|
|
141
|
+
return data;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
async function main() {
|
|
145
|
+
const path = resolvePath(__dirname, '../symbols.js');
|
|
146
|
+
const data = await getSymbolData();
|
|
147
|
+
console.log(`Writing symbols to ${path}`)
|
|
148
|
+
return writeFile(path, data);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
main().catch(e => {
|
|
152
|
+
console.error(e);
|
|
153
|
+
process.exitCode = 1;
|
|
154
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { resolve: resolvePath, join: joinPath } = require('path');
|
|
4
|
+
const { writeFile, mkdir } = require('fs/promises');
|
|
5
|
+
const { symbols } = require('..');
|
|
6
|
+
|
|
7
|
+
function getNodeApiDef() {
|
|
8
|
+
const symbolsSet = new Set();
|
|
9
|
+
for (const ver of Object.values(symbols)) {
|
|
10
|
+
for (const sym of ver.node_api_symbols) {
|
|
11
|
+
symbolsSet.add(sym);
|
|
12
|
+
}
|
|
13
|
+
for (const sym of ver.js_native_api_symbols) {
|
|
14
|
+
symbolsSet.add(sym);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return 'NAME NODE.EXE\nEXPORTS\n' + Array.from(symbolsSet).join('\n');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function getJsNativeApiDef() {
|
|
21
|
+
const symbolsSet = new Set();
|
|
22
|
+
for (const ver of Object.values(symbols)) {
|
|
23
|
+
for (const sym of ver.js_native_api_symbols) {
|
|
24
|
+
symbolsSet.add(sym);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return 'NAME NODE.EXE\nEXPORTS\n' + Array.from(symbolsSet).join('\n');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async function main() {
|
|
31
|
+
const def = resolvePath(__dirname, '../def');
|
|
32
|
+
try {
|
|
33
|
+
await mkdir(def)
|
|
34
|
+
} catch (e) {
|
|
35
|
+
if (e.code !== 'EEXIST') {
|
|
36
|
+
throw e;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const nodeApiDefPath = joinPath(def, 'node_api.def');
|
|
41
|
+
console.log(`Writing Windows .def file to ${nodeApiDefPath}`);
|
|
42
|
+
await writeFile(nodeApiDefPath, getNodeApiDef());
|
|
43
|
+
|
|
44
|
+
const jsNativeApiDefPath = joinPath(def, 'js_native_api.def');
|
|
45
|
+
console.log(`Writing Windows .def file to ${jsNativeApiDefPath}`);
|
|
46
|
+
await writeFile(jsNativeApiDefPath, getJsNativeApiDef());
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
main().catch(e => {
|
|
50
|
+
console.error(e);
|
|
51
|
+
process.exitCode = 1;
|
|
52
|
+
});
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const v1 = {
|
|
4
|
+
js_native_api_symbols: [
|
|
5
|
+
'napi_adjust_external_memory',
|
|
6
|
+
'napi_call_function',
|
|
7
|
+
'napi_close_escapable_handle_scope',
|
|
8
|
+
'napi_close_handle_scope',
|
|
9
|
+
'napi_coerce_to_bool',
|
|
10
|
+
'napi_coerce_to_number',
|
|
11
|
+
'napi_coerce_to_object',
|
|
12
|
+
'napi_coerce_to_string',
|
|
13
|
+
'napi_create_array',
|
|
14
|
+
'napi_create_array_with_length',
|
|
15
|
+
'napi_create_arraybuffer',
|
|
16
|
+
'napi_create_dataview',
|
|
17
|
+
'napi_create_double',
|
|
18
|
+
'napi_create_error',
|
|
19
|
+
'napi_create_external',
|
|
20
|
+
'napi_create_external_arraybuffer',
|
|
21
|
+
'napi_create_function',
|
|
22
|
+
'napi_create_int32',
|
|
23
|
+
'napi_create_int64',
|
|
24
|
+
'napi_create_object',
|
|
25
|
+
'napi_create_promise',
|
|
26
|
+
'napi_create_range_error',
|
|
27
|
+
'napi_create_reference',
|
|
28
|
+
'napi_create_string_latin1',
|
|
29
|
+
'napi_create_string_utf16',
|
|
30
|
+
'napi_create_string_utf8',
|
|
31
|
+
'napi_create_symbol',
|
|
32
|
+
'napi_create_type_error',
|
|
33
|
+
'napi_create_typedarray',
|
|
34
|
+
'napi_create_uint32',
|
|
35
|
+
'napi_define_class',
|
|
36
|
+
'napi_define_properties',
|
|
37
|
+
'napi_delete_element',
|
|
38
|
+
'napi_delete_property',
|
|
39
|
+
'napi_delete_reference',
|
|
40
|
+
'napi_escape_handle',
|
|
41
|
+
'napi_get_and_clear_last_exception',
|
|
42
|
+
'napi_get_array_length',
|
|
43
|
+
'napi_get_arraybuffer_info',
|
|
44
|
+
'napi_get_boolean',
|
|
45
|
+
'napi_get_cb_info',
|
|
46
|
+
'napi_get_dataview_info',
|
|
47
|
+
'napi_get_element',
|
|
48
|
+
'napi_get_global',
|
|
49
|
+
'napi_get_last_error_info',
|
|
50
|
+
'napi_get_named_property',
|
|
51
|
+
'napi_get_new_target',
|
|
52
|
+
'napi_get_null',
|
|
53
|
+
'napi_get_property',
|
|
54
|
+
'napi_get_property_names',
|
|
55
|
+
'napi_get_prototype',
|
|
56
|
+
'napi_get_reference_value',
|
|
57
|
+
'napi_get_typedarray_info',
|
|
58
|
+
'napi_get_undefined',
|
|
59
|
+
'napi_get_value_bool',
|
|
60
|
+
'napi_get_value_double',
|
|
61
|
+
'napi_get_value_external',
|
|
62
|
+
'napi_get_value_int32',
|
|
63
|
+
'napi_get_value_int64',
|
|
64
|
+
'napi_get_value_string_latin1',
|
|
65
|
+
'napi_get_value_string_utf16',
|
|
66
|
+
'napi_get_value_string_utf8',
|
|
67
|
+
'napi_get_value_uint32',
|
|
68
|
+
'napi_get_version',
|
|
69
|
+
'napi_has_element',
|
|
70
|
+
'napi_has_named_property',
|
|
71
|
+
'napi_has_own_property',
|
|
72
|
+
'napi_has_property',
|
|
73
|
+
'napi_instanceof',
|
|
74
|
+
'napi_is_array',
|
|
75
|
+
'napi_is_arraybuffer',
|
|
76
|
+
'napi_is_dataview',
|
|
77
|
+
'napi_is_error',
|
|
78
|
+
'napi_is_exception_pending',
|
|
79
|
+
'napi_is_promise',
|
|
80
|
+
'napi_is_typedarray',
|
|
81
|
+
'napi_new_instance',
|
|
82
|
+
'napi_open_escapable_handle_scope',
|
|
83
|
+
'napi_open_handle_scope',
|
|
84
|
+
'napi_reference_ref',
|
|
85
|
+
'napi_reference_unref',
|
|
86
|
+
'napi_reject_deferred',
|
|
87
|
+
'napi_remove_wrap',
|
|
88
|
+
'napi_resolve_deferred',
|
|
89
|
+
'napi_run_script',
|
|
90
|
+
'napi_set_element',
|
|
91
|
+
'napi_set_named_property',
|
|
92
|
+
'napi_set_property',
|
|
93
|
+
'napi_strict_equals',
|
|
94
|
+
'napi_throw',
|
|
95
|
+
'napi_throw_error',
|
|
96
|
+
'napi_throw_range_error',
|
|
97
|
+
'napi_throw_type_error',
|
|
98
|
+
'napi_typeof',
|
|
99
|
+
'napi_unwrap',
|
|
100
|
+
'napi_wrap'
|
|
101
|
+
],
|
|
102
|
+
node_api_symbols: [
|
|
103
|
+
'napi_async_destroy',
|
|
104
|
+
'napi_async_init',
|
|
105
|
+
'napi_cancel_async_work',
|
|
106
|
+
'napi_create_async_work',
|
|
107
|
+
'napi_create_buffer',
|
|
108
|
+
'napi_create_buffer_copy',
|
|
109
|
+
'napi_create_external_buffer',
|
|
110
|
+
'napi_delete_async_work',
|
|
111
|
+
'napi_fatal_error',
|
|
112
|
+
'napi_get_buffer_info',
|
|
113
|
+
'napi_get_node_version',
|
|
114
|
+
'napi_is_buffer',
|
|
115
|
+
'napi_make_callback',
|
|
116
|
+
'napi_module_register',
|
|
117
|
+
'napi_queue_async_work'
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const v2 = {
|
|
122
|
+
js_native_api_symbols: [
|
|
123
|
+
...v1.js_native_api_symbols
|
|
124
|
+
],
|
|
125
|
+
node_api_symbols: [
|
|
126
|
+
...v1.node_api_symbols,
|
|
127
|
+
'napi_get_uv_event_loop'
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const v3 = {
|
|
132
|
+
js_native_api_symbols: [
|
|
133
|
+
...v2.js_native_api_symbols
|
|
134
|
+
],
|
|
135
|
+
node_api_symbols: [
|
|
136
|
+
...v2.node_api_symbols,
|
|
137
|
+
'napi_add_env_cleanup_hook',
|
|
138
|
+
'napi_close_callback_scope',
|
|
139
|
+
'napi_fatal_exception',
|
|
140
|
+
'napi_open_callback_scope',
|
|
141
|
+
'napi_remove_env_cleanup_hook'
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
const v4 = {
|
|
146
|
+
js_native_api_symbols: [
|
|
147
|
+
...v3.js_native_api_symbols
|
|
148
|
+
],
|
|
149
|
+
node_api_symbols: [
|
|
150
|
+
...v3.node_api_symbols,
|
|
151
|
+
'napi_acquire_threadsafe_function',
|
|
152
|
+
'napi_call_threadsafe_function',
|
|
153
|
+
'napi_create_threadsafe_function',
|
|
154
|
+
'napi_get_threadsafe_function_context',
|
|
155
|
+
'napi_ref_threadsafe_function',
|
|
156
|
+
'napi_release_threadsafe_function',
|
|
157
|
+
'napi_unref_threadsafe_function'
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
const v5 = {
|
|
162
|
+
js_native_api_symbols: [
|
|
163
|
+
...v4.js_native_api_symbols,
|
|
164
|
+
'napi_add_finalizer',
|
|
165
|
+
'napi_create_date',
|
|
166
|
+
'napi_get_date_value',
|
|
167
|
+
'napi_is_date'
|
|
168
|
+
],
|
|
169
|
+
node_api_symbols: [
|
|
170
|
+
...v4.node_api_symbols
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const v6 = {
|
|
175
|
+
js_native_api_symbols: [
|
|
176
|
+
...v5.js_native_api_symbols,
|
|
177
|
+
'napi_create_bigint_int64',
|
|
178
|
+
'napi_create_bigint_uint64',
|
|
179
|
+
'napi_create_bigint_words',
|
|
180
|
+
'napi_get_all_property_names',
|
|
181
|
+
'napi_get_instance_data',
|
|
182
|
+
'napi_get_value_bigint_int64',
|
|
183
|
+
'napi_get_value_bigint_uint64',
|
|
184
|
+
'napi_get_value_bigint_words',
|
|
185
|
+
'napi_set_instance_data'
|
|
186
|
+
],
|
|
187
|
+
node_api_symbols: [
|
|
188
|
+
...v5.node_api_symbols
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const v7 = {
|
|
193
|
+
js_native_api_symbols: [
|
|
194
|
+
...v6.js_native_api_symbols,
|
|
195
|
+
'napi_detach_arraybuffer',
|
|
196
|
+
'napi_is_detached_arraybuffer'
|
|
197
|
+
],
|
|
198
|
+
node_api_symbols: [
|
|
199
|
+
...v6.node_api_symbols
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
const v8 = {
|
|
204
|
+
js_native_api_symbols: [
|
|
205
|
+
...v7.js_native_api_symbols,
|
|
206
|
+
'napi_check_object_type_tag',
|
|
207
|
+
'napi_object_freeze',
|
|
208
|
+
'napi_object_seal',
|
|
209
|
+
'napi_type_tag_object'
|
|
210
|
+
],
|
|
211
|
+
node_api_symbols: [
|
|
212
|
+
...v7.node_api_symbols,
|
|
213
|
+
'napi_add_async_cleanup_hook',
|
|
214
|
+
'napi_remove_async_cleanup_hook'
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
const v9 = {
|
|
219
|
+
js_native_api_symbols: [
|
|
220
|
+
...v8.js_native_api_symbols,
|
|
221
|
+
'node_api_create_syntax_error',
|
|
222
|
+
'node_api_symbol_for',
|
|
223
|
+
'node_api_throw_syntax_error'
|
|
224
|
+
],
|
|
225
|
+
node_api_symbols: [
|
|
226
|
+
...v8.node_api_symbols,
|
|
227
|
+
'node_api_get_module_file_name'
|
|
228
|
+
]
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
module.exports = {
|
|
232
|
+
v1,
|
|
233
|
+
v2,
|
|
234
|
+
v3,
|
|
235
|
+
v4,
|
|
236
|
+
v5,
|
|
237
|
+
v6,
|
|
238
|
+
v7,
|
|
239
|
+
v8,
|
|
240
|
+
v9
|
|
241
|
+
}
|
|
Binary file
|
|
Binary file
|