@cmmd-center/forge 0.13.6 → 0.13.8
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/dist/{BunHttpServer-DKvSpNd1.cjs → BunHttpServer-C7-1JJ7b.cjs} +4 -4
- package/dist/{BunHttpServer-CDh4Vioe.mjs → BunHttpServer-CVPGkizx.mjs} +4 -4
- package/dist/{BunServices-D6PAheqS.mjs → BunServices-CPrZSIfE.mjs} +2 -2
- package/dist/{BunServices-DDh7Whyx.cjs → BunServices-Dl-3897e.cjs} +2 -2
- package/dist/{Cache-BVilO50s.mjs → Cache-C9cwdCDt.mjs} +2 -2
- package/dist/{Cache-DCF22Dfk.cjs → Cache-Cf3ARNaS.cjs} +2 -2
- package/dist/{HttpServer-ClsGgAq1.mjs → HttpServer-COaBeM7-.mjs} +2 -2
- package/dist/{HttpServer-D1gSU7NX.cjs → HttpServer-CggZzScj.cjs} +3 -3
- package/dist/{NodeHttpServer-Dfc7nSMq.cjs → NodeHttpServer-Bi339XFk.cjs} +5 -5
- package/dist/{NodeHttpServer-DT0TF8s4.mjs → NodeHttpServer-UQnvZnmu.mjs} +5 -5
- package/dist/{NodePTY-loxi8Vku.mjs → NodePTY-B1u6RHXk.mjs} +2 -2
- package/dist/{NodePTY-S4tPEwZc.cjs → NodePTY-UOaRyQsj.cjs} +2 -2
- package/dist/{NodeServices-Cb0rXFb2.cjs → NodeServices-CKFIZVu5.cjs} +2 -2
- package/dist/{NodeServices-DE8jhdcU.cjs → NodeServices-R0BZsZ72.cjs} +1 -1
- package/dist/{NodeServices-BahzLhbo.mjs → NodeServices-z1Ac4lEO.mjs} +2 -2
- package/dist/{NodeSqliteClient-DqFjB3u_.mjs → NodeSqliteClient-BrzqdOsF.mjs} +4 -4
- package/dist/{NodeSqliteClient-qjBWAOGq.cjs → NodeSqliteClient-CyJvo9y9.cjs} +4 -4
- package/dist/{NodeTerminal-rYbifme7.cjs → NodeTerminal-B89MobLp.cjs} +2 -2
- package/dist/{NodeTerminal-BPw7bktz.mjs → NodeTerminal-pYVVRTiD.mjs} +2 -2
- package/dist/{Path-CGCc_dDx.cjs → Path-BunGrE8F.cjs} +72 -1
- package/dist/{Path-C851t6sC.mjs → Path-evOm-H0Q.mjs} +61 -2
- package/dist/{SqlError-CzB6p9lL.cjs → SqlError-1wIMjXAf.cjs} +2 -2
- package/dist/{SqlError-3aqibZrj.mjs → SqlError-CezTFGvr.mjs} +2 -2
- package/dist/{SqliteClient-DTWCGkrj.mjs → SqliteClient-D3Yd3ZHn.mjs} +3 -3
- package/dist/{SqliteClient-Cq1peWN1.cjs → SqliteClient-bo7iui1t.cjs} +3 -3
- package/dist/bin.cjs +4875 -3961
- package/dist/bin.mjs +4422 -3514
- package/dist/client/assets/{CanvasPanel-BwSV27Ct.js → CanvasPanel-z0F-jdf1.js} +2 -2
- package/dist/client/assets/{CompositeItem-CZk3X-ud.js → CompositeItem-P9UVXCKv.js} +2 -2
- package/dist/client/assets/DiffPanel-CBfeDIH3.js +64 -0
- package/dist/client/assets/{DiffPanel.logic-D-SDgBF9.js → DiffPanel.logic-CZdlskWf.js} +2 -2
- package/dist/client/assets/DiffPanelShell-BnSbIo9A.js +2532 -0
- package/dist/client/assets/{DiffWorkerPoolProvider-BO_xUE3R.js → DiffWorkerPoolProvider-DC4SN57K.js} +9 -9
- package/dist/client/assets/{PullRequestCodePanel-CW4RK1Oa.js → PullRequestCodePanel-DwjjRPkc.js} +3 -3
- package/dist/client/assets/Virtualizer-ClYwoP30.js +2 -0
- package/dist/client/assets/{canvasStateStore-5DH2Z-PG.js → canvasStateStore-CdQxd2aO.js} +2 -2
- package/dist/client/assets/cmmdAuthRedirect-Bp1uQaQ9.js +2 -0
- package/dist/client/assets/index-BE83u7Db.css +1 -0
- package/dist/client/assets/index-CZhTqk2p.js +153 -0
- package/dist/client/assets/{popover-Dxp_1Sz0.js → popover-CUSlb3eK.js} +2 -2
- package/dist/client/assets/src-BL-mOkT1.js +3 -0
- package/dist/client/assets/{toggle-B-GE6jq_.js → toggle-BREV66nT.js} +2 -2
- package/dist/client/index.html +11 -11
- package/dist/forge-build.json +1 -1
- package/dist/node_modules/@ff-labs/fff-bin-linux-x64-gnu/libfff_c.so +0 -0
- package/dist/node_modules/@ff-labs/fff-bin-linux-x64-gnu/package.json +27 -0
- package/dist/node_modules/@ff-labs/fff-node/.bun-tag-689ffe3747e13d19 +0 -0
- package/dist/node_modules/@ff-labs/fff-node/README.md +126 -0
- package/dist/node_modules/@ff-labs/fff-node/dist/src/binary.d.ts +22 -0
- package/dist/node_modules/@ff-labs/fff-node/dist/src/binary.js +144 -0
- package/dist/node_modules/@ff-labs/fff-node/dist/src/fff-api.d.ts +581 -0
- package/dist/node_modules/@ff-labs/fff-node/dist/src/fff-api.js +24 -0
- package/dist/node_modules/@ff-labs/fff-node/dist/src/ffi.d.ts +137 -0
- package/dist/node_modules/@ff-labs/fff-node/dist/src/ffi.js +1191 -0
- package/dist/node_modules/@ff-labs/fff-node/dist/src/finder.d.ts +353 -0
- package/dist/node_modules/@ff-labs/fff-node/dist/src/finder.js +488 -0
- package/dist/node_modules/@ff-labs/fff-node/dist/src/index.d.ts +47 -0
- package/dist/node_modules/@ff-labs/fff-node/dist/src/index.js +47 -0
- package/dist/node_modules/@ff-labs/fff-node/dist/src/platform.d.ts +27 -0
- package/dist/node_modules/@ff-labs/fff-node/dist/src/platform.js +120 -0
- package/dist/node_modules/@ff-labs/fff-node/package.json +76 -0
- package/dist/node_modules/@yuuang/ffi-rs-linux-x64-gnu/README.md +794 -0
- package/dist/node_modules/@yuuang/ffi-rs-linux-x64-gnu/ffi-rs.linux-x64-gnu.node +0 -0
- package/dist/node_modules/@yuuang/ffi-rs-linux-x64-gnu/package.json +21 -0
- package/dist/node_modules/ffi-rs/LICENSE +21 -0
- package/dist/node_modules/ffi-rs/README.md +794 -0
- package/dist/node_modules/ffi-rs/index.d.ts +222 -0
- package/dist/node_modules/ffi-rs/index.js +380 -0
- package/dist/node_modules/ffi-rs/package.json +76 -0
- package/dist/{open-FIgTDosf.mjs → open-D8mGyWmt.mjs} +3 -3
- package/package.json +2 -1
- package/dist/client/assets/DiffPanel-ixzJ8GwW.js +0 -64
- package/dist/client/assets/DiffPanelShell-Dz5Wvcvi.js +0 -2532
- package/dist/client/assets/cmmdAuthRedirect-D68LO-sw.js +0 -2
- package/dist/client/assets/diffTargetResolution-WqxwJEax.js +0 -2
- package/dist/client/assets/index-DivaIsZ4.css +0 -1
- package/dist/client/assets/index-UXWCtM6c.js +0 -153
- package/dist/client/assets/src-n5cTLVWV.js +0 -3
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
|
|
2
|
+
interface RawPointer { }
|
|
3
|
+
|
|
4
|
+
export interface JsExternal {
|
|
5
|
+
_externalDataPlaceholder: RawPointer;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export enum DataType {
|
|
9
|
+
/**
|
|
10
|
+
UTF-16 String, equivalent to char*
|
|
11
|
+
*/
|
|
12
|
+
String = 0,
|
|
13
|
+
/**
|
|
14
|
+
UTF-16 String, equivalent to wchar*
|
|
15
|
+
*/
|
|
16
|
+
WString = 15,
|
|
17
|
+
I32 = 1,
|
|
18
|
+
Double = 2,
|
|
19
|
+
/**
|
|
20
|
+
* denotes ordinary i32 number array instead of Uint32Array
|
|
21
|
+
*/
|
|
22
|
+
I32Array = 3,
|
|
23
|
+
StringArray = 4,
|
|
24
|
+
/**
|
|
25
|
+
denotes f64 array
|
|
26
|
+
*/
|
|
27
|
+
DoubleArray = 5,
|
|
28
|
+
Boolean = 6,
|
|
29
|
+
/**
|
|
30
|
+
equal with undefined
|
|
31
|
+
*/
|
|
32
|
+
Void = 7,
|
|
33
|
+
I64 = 8,
|
|
34
|
+
U8 = 9,
|
|
35
|
+
/**
|
|
36
|
+
Equivanlent to Buffer
|
|
37
|
+
*/
|
|
38
|
+
U8Array = 10,
|
|
39
|
+
/**
|
|
40
|
+
A type that wrap native pointer
|
|
41
|
+
*/
|
|
42
|
+
External = 11,
|
|
43
|
+
U64 = 12,
|
|
44
|
+
FloatArray = 13,
|
|
45
|
+
Float = 14,
|
|
46
|
+
/**
|
|
47
|
+
As params will be transformed to i64, as return value will be created from i64
|
|
48
|
+
*/
|
|
49
|
+
BigInt = 16,
|
|
50
|
+
I16 = 17,
|
|
51
|
+
StructArray = 18,
|
|
52
|
+
I16Array = 19,
|
|
53
|
+
U32 = 20,
|
|
54
|
+
StackStruct = 999, // reserve keyword
|
|
55
|
+
StackArray = 996,
|
|
56
|
+
Function = 998,
|
|
57
|
+
Array = 997,
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
type DataTypeToType<T> = T extends DataType.String
|
|
61
|
+
? string
|
|
62
|
+
: T extends DataType.WString
|
|
63
|
+
? string
|
|
64
|
+
: T extends DataType.U8
|
|
65
|
+
? number
|
|
66
|
+
: T extends DataType.I32
|
|
67
|
+
? number
|
|
68
|
+
: T extends DataType.I64
|
|
69
|
+
? number
|
|
70
|
+
: T extends DataType.BigInt
|
|
71
|
+
? BigInt
|
|
72
|
+
: T extends DataType.U64
|
|
73
|
+
? number
|
|
74
|
+
: T extends DataType.U32
|
|
75
|
+
? number
|
|
76
|
+
: T extends DataType.Double
|
|
77
|
+
? number
|
|
78
|
+
: T extends DataType.External
|
|
79
|
+
? JsExternal
|
|
80
|
+
: T extends DataType.U8Array
|
|
81
|
+
? number[]
|
|
82
|
+
: T extends DataType.I16Array
|
|
83
|
+
? number[]
|
|
84
|
+
: T extends DataType.I32Array
|
|
85
|
+
? number[]
|
|
86
|
+
: T extends DataType.StringArray
|
|
87
|
+
? string[]
|
|
88
|
+
: T extends DataType.DoubleArray
|
|
89
|
+
? number[]
|
|
90
|
+
: T extends DataType.FloatArray
|
|
91
|
+
? number[]
|
|
92
|
+
: T extends DataType.Boolean
|
|
93
|
+
? boolean
|
|
94
|
+
: T extends DataType.Void
|
|
95
|
+
? undefined
|
|
96
|
+
: never;
|
|
97
|
+
|
|
98
|
+
export enum FFITypeTag {
|
|
99
|
+
StackStruct = DataType.StackStruct,
|
|
100
|
+
StackArray = DataType.StackArray,
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface ArrayConstructorOptions {
|
|
104
|
+
type: DataType;
|
|
105
|
+
length: number;
|
|
106
|
+
ffiTypeTag?: FFITypeTag;
|
|
107
|
+
dynamicArray?: boolean
|
|
108
|
+
structItemType?: RecordFieldType
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface FuncConstructorOptions {
|
|
112
|
+
paramsType: FieldType[];
|
|
113
|
+
retType: FieldType;
|
|
114
|
+
needFree?: boolean
|
|
115
|
+
// Default:false, whether or not free function call params memory automatically which are allocated in c side
|
|
116
|
+
freeCFuncParamsMemory?: boolean
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export function arrayConstructor(options: ArrayConstructorOptions): ArrayConstructorOptions;
|
|
120
|
+
|
|
121
|
+
export function funcConstructor(options: FuncConstructorOptions): FuncConstructorOptions;
|
|
122
|
+
|
|
123
|
+
export interface OpenParams {
|
|
124
|
+
library: string;
|
|
125
|
+
path: string;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export function open(params: OpenParams): void;
|
|
129
|
+
export function close(library: string): void;
|
|
130
|
+
|
|
131
|
+
export function createPointer(params: {
|
|
132
|
+
paramsType: FieldType[];
|
|
133
|
+
paramsValue: unknown[];
|
|
134
|
+
}): JsExternal[]
|
|
135
|
+
|
|
136
|
+
export enum PointerType {
|
|
137
|
+
RsPointer = 0,
|
|
138
|
+
CPointer = 1
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export function freePointer(params: {
|
|
142
|
+
paramsType: FieldType[];
|
|
143
|
+
paramsValue: JsExternal[];
|
|
144
|
+
pointerType: PointerType
|
|
145
|
+
}): void
|
|
146
|
+
|
|
147
|
+
export function restorePointer<T>(params: {
|
|
148
|
+
retType: FieldType[];
|
|
149
|
+
paramsValue: JsExternal[];
|
|
150
|
+
}): DataTypeToType<T>[]
|
|
151
|
+
|
|
152
|
+
export function unwrapPointer(params: JsExternal[]): JsExternal[]
|
|
153
|
+
|
|
154
|
+
export function wrapPointer(params: JsExternal[]): JsExternal[]
|
|
155
|
+
|
|
156
|
+
export function isNullPointer(params: JsExternal): boolean
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Wrap an existing native pointer into a Node.js `Buffer` **without copying**.
|
|
160
|
+
*
|
|
161
|
+
* The returned Buffer shares the same memory as `external`, so reads/writes on
|
|
162
|
+
* either side are immediately visible on the other — the zero-copy equivalent
|
|
163
|
+
* of ffi-napi's `ref.reinterpret`.
|
|
164
|
+
*
|
|
165
|
+
* `external` is the pointer to wrap (a `DataType.External` returned from `load`,
|
|
166
|
+
* or any `JsExternal` from `createPointer`/`unwrapPointer`/`wrapPointer`).
|
|
167
|
+
* `length` is the number of bytes to expose.
|
|
168
|
+
*
|
|
169
|
+
* ffi-rs does NOT free the underlying memory when the Buffer is garbage
|
|
170
|
+
* collected; the caller owns the pointer's lifetime (e.g. a region returned by
|
|
171
|
+
* `mmap` must stay mapped until you are done with the Buffer and call `munmap`
|
|
172
|
+
* yourself). On runtimes that forbid external buffers (e.g. Electron) this
|
|
173
|
+
* silently falls back to copying the data.
|
|
174
|
+
*/
|
|
175
|
+
export function createExternalBuffer(external: JsExternal, length: number): Buffer
|
|
176
|
+
|
|
177
|
+
type ResultWithErrno<T, E = undefined> = E extends true
|
|
178
|
+
? { value: T; errnoCode: number; errnoMessage: string }
|
|
179
|
+
: T;
|
|
180
|
+
|
|
181
|
+
type ResultWithPromise<T, P = undefined> = P extends true
|
|
182
|
+
? Promise<T>
|
|
183
|
+
: T;
|
|
184
|
+
|
|
185
|
+
export type FieldType =
|
|
186
|
+
| DataType
|
|
187
|
+
| ArrayConstructorOptions
|
|
188
|
+
| FuncConstructorOptions
|
|
189
|
+
| RecordFieldType
|
|
190
|
+
|
|
191
|
+
interface RecordFieldType extends Record<string, FieldType> { }
|
|
192
|
+
|
|
193
|
+
type FieldTypeToType<T> = T extends DataType
|
|
194
|
+
? DataTypeToType<T>
|
|
195
|
+
: T extends ArrayConstructorOptions
|
|
196
|
+
? DataTypeToType<T['type']>
|
|
197
|
+
: T extends RecordFieldType
|
|
198
|
+
? { [K in keyof T]: FieldTypeToType<T[K]> }
|
|
199
|
+
: never;
|
|
200
|
+
|
|
201
|
+
export interface FFIParams<T, E = undefined, R = undefined> {
|
|
202
|
+
library: string;
|
|
203
|
+
funcName: string;
|
|
204
|
+
retType: T;
|
|
205
|
+
paramsType: FieldType[];
|
|
206
|
+
paramsValue: unknown[];
|
|
207
|
+
// whether need output errno
|
|
208
|
+
errno?: E
|
|
209
|
+
runInNewThread?: R
|
|
210
|
+
// Default:false, whether or not need to free the result of return value memory automatically
|
|
211
|
+
freeResultMemory?: boolean
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
export function load<T extends FieldType, E = undefined, R extends boolean | undefined = undefined>(
|
|
215
|
+
params: FFIParams<T, E, R>
|
|
216
|
+
): R extends true ? Promise<ResultWithErrno<FieldTypeToType<T>, E>> : ResultWithErrno<FieldTypeToType<T>, E>
|
|
217
|
+
|
|
218
|
+
type FuncObj<T, E = undefined, R = undefined> = Record<string, Omit<FFIParams<T, E, R>, 'paramsValue' | 'funcName'>>
|
|
219
|
+
|
|
220
|
+
export function define<T extends FuncObj<FieldType, boolean | undefined, boolean | undefined>>(funcs: T): {
|
|
221
|
+
[K in keyof T]: (paramsValue: unknown[]) => ResultWithPromise<ResultWithErrno<FieldTypeToType<T[K]['retType']>, T[K]['errno']>, T[K]['runInNewThread']>;
|
|
222
|
+
}
|
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
const { existsSync, readFileSync } = require('fs')
|
|
2
|
+
const { join } = require('path')
|
|
3
|
+
|
|
4
|
+
const { platform, arch } = process
|
|
5
|
+
|
|
6
|
+
let nativeBinding = null
|
|
7
|
+
let localFileExisted = false
|
|
8
|
+
let loadError = null
|
|
9
|
+
|
|
10
|
+
function isMusl() {
|
|
11
|
+
// For Node 10
|
|
12
|
+
if (!process.report || typeof process.report.getReport !== 'function') {
|
|
13
|
+
try {
|
|
14
|
+
const lddPath = require('child_process').execSync('which ldd').toString().trim()
|
|
15
|
+
return readFileSync(lddPath, 'utf8').includes('musl')
|
|
16
|
+
} catch (e) {
|
|
17
|
+
return true
|
|
18
|
+
}
|
|
19
|
+
} else {
|
|
20
|
+
const { glibcVersionRuntime } = process.report.getReport().header
|
|
21
|
+
return !glibcVersionRuntime
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
switch (platform) {
|
|
26
|
+
case 'android':
|
|
27
|
+
switch (arch) {
|
|
28
|
+
case 'arm64':
|
|
29
|
+
localFileExisted = existsSync(join(__dirname, 'ffi-rs.android-arm64.node'))
|
|
30
|
+
try {
|
|
31
|
+
if (localFileExisted) {
|
|
32
|
+
nativeBinding = require('./ffi-rs.android-arm64.node')
|
|
33
|
+
} else {
|
|
34
|
+
nativeBinding = require('@yuuang/ffi-rs-android-arm64')
|
|
35
|
+
}
|
|
36
|
+
} catch (e) {
|
|
37
|
+
loadError = e
|
|
38
|
+
}
|
|
39
|
+
break
|
|
40
|
+
case 'arm':
|
|
41
|
+
localFileExisted = existsSync(join(__dirname, 'ffi-rs.android-arm-eabi.node'))
|
|
42
|
+
try {
|
|
43
|
+
if (localFileExisted) {
|
|
44
|
+
nativeBinding = require('./ffi-rs.android-arm-eabi.node')
|
|
45
|
+
} else {
|
|
46
|
+
nativeBinding = require('@yuuang/ffi-rs-android-arm-eabi')
|
|
47
|
+
}
|
|
48
|
+
} catch (e) {
|
|
49
|
+
loadError = e
|
|
50
|
+
}
|
|
51
|
+
break
|
|
52
|
+
default:
|
|
53
|
+
throw new Error(`Unsupported architecture on Android ${arch}`)
|
|
54
|
+
}
|
|
55
|
+
break
|
|
56
|
+
case 'win32':
|
|
57
|
+
switch (arch) {
|
|
58
|
+
case 'x64':
|
|
59
|
+
localFileExisted = existsSync(
|
|
60
|
+
join(__dirname, 'ffi-rs.win32-x64-msvc.node')
|
|
61
|
+
)
|
|
62
|
+
try {
|
|
63
|
+
if (localFileExisted) {
|
|
64
|
+
nativeBinding = require('./ffi-rs.win32-x64-msvc.node')
|
|
65
|
+
} else {
|
|
66
|
+
nativeBinding = require('@yuuang/ffi-rs-win32-x64-msvc')
|
|
67
|
+
}
|
|
68
|
+
} catch (e) {
|
|
69
|
+
loadError = e
|
|
70
|
+
}
|
|
71
|
+
break
|
|
72
|
+
case 'ia32':
|
|
73
|
+
localFileExisted = existsSync(
|
|
74
|
+
join(__dirname, 'ffi-rs.win32-ia32-msvc.node')
|
|
75
|
+
)
|
|
76
|
+
try {
|
|
77
|
+
if (localFileExisted) {
|
|
78
|
+
nativeBinding = require('./ffi-rs.win32-ia32-msvc.node')
|
|
79
|
+
} else {
|
|
80
|
+
nativeBinding = require('@yuuang/ffi-rs-win32-ia32-msvc')
|
|
81
|
+
}
|
|
82
|
+
} catch (e) {
|
|
83
|
+
loadError = e
|
|
84
|
+
}
|
|
85
|
+
break
|
|
86
|
+
case 'arm64':
|
|
87
|
+
localFileExisted = existsSync(
|
|
88
|
+
join(__dirname, 'ffi-rs.win32-arm64-msvc.node')
|
|
89
|
+
)
|
|
90
|
+
try {
|
|
91
|
+
if (localFileExisted) {
|
|
92
|
+
nativeBinding = require('./ffi-rs.win32-arm64-msvc.node')
|
|
93
|
+
} else {
|
|
94
|
+
nativeBinding = require('@yuuang/ffi-rs-win32-arm64-msvc')
|
|
95
|
+
}
|
|
96
|
+
} catch (e) {
|
|
97
|
+
loadError = e
|
|
98
|
+
}
|
|
99
|
+
break
|
|
100
|
+
default:
|
|
101
|
+
throw new Error(`Unsupported architecture on Windows: ${arch}`)
|
|
102
|
+
}
|
|
103
|
+
break
|
|
104
|
+
case 'darwin':
|
|
105
|
+
localFileExisted = existsSync(join(__dirname, 'ffi-rs.darwin-universal.node'))
|
|
106
|
+
try {
|
|
107
|
+
if (localFileExisted) {
|
|
108
|
+
nativeBinding = require('./ffi-rs.darwin-universal.node')
|
|
109
|
+
} else {
|
|
110
|
+
nativeBinding = require('@yuuang/ffi-rs-darwin-universal')
|
|
111
|
+
}
|
|
112
|
+
break
|
|
113
|
+
} catch { }
|
|
114
|
+
switch (arch) {
|
|
115
|
+
case 'x64':
|
|
116
|
+
localFileExisted = existsSync(join(__dirname, 'ffi-rs.darwin-x64.node'))
|
|
117
|
+
try {
|
|
118
|
+
if (localFileExisted) {
|
|
119
|
+
nativeBinding = require('./ffi-rs.darwin-x64.node')
|
|
120
|
+
} else {
|
|
121
|
+
nativeBinding = require('@yuuang/ffi-rs-darwin-x64')
|
|
122
|
+
}
|
|
123
|
+
} catch (e) {
|
|
124
|
+
loadError = e
|
|
125
|
+
}
|
|
126
|
+
break
|
|
127
|
+
case 'arm64':
|
|
128
|
+
localFileExisted = existsSync(
|
|
129
|
+
join(__dirname, 'ffi-rs.darwin-arm64.node')
|
|
130
|
+
)
|
|
131
|
+
try {
|
|
132
|
+
if (localFileExisted) {
|
|
133
|
+
nativeBinding = require('./ffi-rs.darwin-arm64.node')
|
|
134
|
+
} else {
|
|
135
|
+
nativeBinding = require('@yuuang/ffi-rs-darwin-arm64')
|
|
136
|
+
}
|
|
137
|
+
} catch (e) {
|
|
138
|
+
loadError = e
|
|
139
|
+
}
|
|
140
|
+
break
|
|
141
|
+
default:
|
|
142
|
+
throw new Error(`Unsupported architecture on macOS: ${arch}`)
|
|
143
|
+
}
|
|
144
|
+
break
|
|
145
|
+
case 'freebsd':
|
|
146
|
+
if (arch !== 'x64') {
|
|
147
|
+
throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
|
|
148
|
+
}
|
|
149
|
+
localFileExisted = existsSync(join(__dirname, 'ffi-rs.freebsd-x64.node'))
|
|
150
|
+
try {
|
|
151
|
+
if (localFileExisted) {
|
|
152
|
+
nativeBinding = require('./ffi-rs.freebsd-x64.node')
|
|
153
|
+
} else {
|
|
154
|
+
nativeBinding = require('@yuuang/ffi-rs-freebsd-x64')
|
|
155
|
+
}
|
|
156
|
+
} catch (e) {
|
|
157
|
+
loadError = e
|
|
158
|
+
}
|
|
159
|
+
break
|
|
160
|
+
case 'linux':
|
|
161
|
+
switch (arch) {
|
|
162
|
+
case 'x64':
|
|
163
|
+
if (isMusl()) {
|
|
164
|
+
localFileExisted = existsSync(
|
|
165
|
+
join(__dirname, 'ffi-rs.linux-x64-musl.node')
|
|
166
|
+
)
|
|
167
|
+
try {
|
|
168
|
+
if (localFileExisted) {
|
|
169
|
+
nativeBinding = require('./ffi-rs.linux-x64-musl.node')
|
|
170
|
+
} else {
|
|
171
|
+
nativeBinding = require('@yuuang/ffi-rs-linux-x64-musl')
|
|
172
|
+
}
|
|
173
|
+
} catch (e) {
|
|
174
|
+
loadError = e
|
|
175
|
+
}
|
|
176
|
+
} else {
|
|
177
|
+
localFileExisted = existsSync(
|
|
178
|
+
join(__dirname, 'ffi-rs.linux-x64-gnu.node')
|
|
179
|
+
)
|
|
180
|
+
try {
|
|
181
|
+
if (localFileExisted) {
|
|
182
|
+
nativeBinding = require('./ffi-rs.linux-x64-gnu.node')
|
|
183
|
+
} else {
|
|
184
|
+
nativeBinding = require('@yuuang/ffi-rs-linux-x64-gnu')
|
|
185
|
+
}
|
|
186
|
+
} catch (e) {
|
|
187
|
+
loadError = e
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
break
|
|
191
|
+
case 'arm64':
|
|
192
|
+
if (isMusl()) {
|
|
193
|
+
localFileExisted = existsSync(
|
|
194
|
+
join(__dirname, 'ffi-rs.linux-arm64-musl.node')
|
|
195
|
+
)
|
|
196
|
+
try {
|
|
197
|
+
if (localFileExisted) {
|
|
198
|
+
nativeBinding = require('./ffi-rs.linux-arm64-musl.node')
|
|
199
|
+
} else {
|
|
200
|
+
nativeBinding = require('@yuuang/ffi-rs-linux-arm64-musl')
|
|
201
|
+
}
|
|
202
|
+
} catch (e) {
|
|
203
|
+
loadError = e
|
|
204
|
+
}
|
|
205
|
+
} else {
|
|
206
|
+
localFileExisted = existsSync(
|
|
207
|
+
join(__dirname, 'ffi-rs.linux-arm64-gnu.node')
|
|
208
|
+
)
|
|
209
|
+
try {
|
|
210
|
+
if (localFileExisted) {
|
|
211
|
+
nativeBinding = require('./ffi-rs.linux-arm64-gnu.node')
|
|
212
|
+
} else {
|
|
213
|
+
nativeBinding = require('@yuuang/ffi-rs-linux-arm64-gnu')
|
|
214
|
+
}
|
|
215
|
+
} catch (e) {
|
|
216
|
+
loadError = e
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
break
|
|
220
|
+
case 'arm':
|
|
221
|
+
if (isMusl()) {
|
|
222
|
+
localFileExisted = existsSync(
|
|
223
|
+
join(__dirname, 'ffi-rs.linux-arm-musleabihf.node')
|
|
224
|
+
)
|
|
225
|
+
try {
|
|
226
|
+
if (localFileExisted) {
|
|
227
|
+
nativeBinding = require('./ffi-rs.linux-arm-musleabihf.node')
|
|
228
|
+
} else {
|
|
229
|
+
nativeBinding = require('@yuuang/ffi-rs-linux-arm-musleabihf')
|
|
230
|
+
}
|
|
231
|
+
} catch (e) {
|
|
232
|
+
loadError = e
|
|
233
|
+
}
|
|
234
|
+
} else {
|
|
235
|
+
localFileExisted = existsSync(
|
|
236
|
+
join(__dirname, 'ffi-rs.linux-arm-gnueabihf.node')
|
|
237
|
+
)
|
|
238
|
+
try {
|
|
239
|
+
if (localFileExisted) {
|
|
240
|
+
nativeBinding = require('./ffi-rs.linux-arm-gnueabihf.node')
|
|
241
|
+
} else {
|
|
242
|
+
nativeBinding = require('@yuuang/ffi-rs-linux-arm-gnueabihf')
|
|
243
|
+
}
|
|
244
|
+
} catch (e) {
|
|
245
|
+
loadError = e
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
break
|
|
249
|
+
case 'riscv64':
|
|
250
|
+
if (isMusl()) {
|
|
251
|
+
localFileExisted = existsSync(
|
|
252
|
+
join(__dirname, 'ffi-rs.linux-riscv64-musl.node')
|
|
253
|
+
)
|
|
254
|
+
try {
|
|
255
|
+
if (localFileExisted) {
|
|
256
|
+
nativeBinding = require('./ffi-rs.linux-riscv64-musl.node')
|
|
257
|
+
} else {
|
|
258
|
+
nativeBinding = require('@yuuang/ffi-rs-linux-riscv64-musl')
|
|
259
|
+
}
|
|
260
|
+
} catch (e) {
|
|
261
|
+
loadError = e
|
|
262
|
+
}
|
|
263
|
+
} else {
|
|
264
|
+
localFileExisted = existsSync(
|
|
265
|
+
join(__dirname, 'ffi-rs.linux-riscv64-gnu.node')
|
|
266
|
+
)
|
|
267
|
+
try {
|
|
268
|
+
if (localFileExisted) {
|
|
269
|
+
nativeBinding = require('./ffi-rs.linux-riscv64-gnu.node')
|
|
270
|
+
} else {
|
|
271
|
+
nativeBinding = require('@yuuang/ffi-rs-linux-riscv64-gnu')
|
|
272
|
+
}
|
|
273
|
+
} catch (e) {
|
|
274
|
+
loadError = e
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
break
|
|
278
|
+
case 's390x':
|
|
279
|
+
localFileExisted = existsSync(
|
|
280
|
+
join(__dirname, 'ffi-rs.linux-s390x-gnu.node')
|
|
281
|
+
)
|
|
282
|
+
try {
|
|
283
|
+
if (localFileExisted) {
|
|
284
|
+
nativeBinding = require('./ffi-rs.linux-s390x-gnu.node')
|
|
285
|
+
} else {
|
|
286
|
+
nativeBinding = require('@yuuang/ffi-rs-linux-s390x-gnu')
|
|
287
|
+
}
|
|
288
|
+
} catch (e) {
|
|
289
|
+
loadError = e
|
|
290
|
+
}
|
|
291
|
+
break
|
|
292
|
+
default:
|
|
293
|
+
throw new Error(`Unsupported architecture on Linux: ${arch}`)
|
|
294
|
+
}
|
|
295
|
+
break
|
|
296
|
+
default:
|
|
297
|
+
throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
if (!nativeBinding) {
|
|
301
|
+
if (loadError) {
|
|
302
|
+
throw loadError
|
|
303
|
+
}
|
|
304
|
+
throw new Error(`Failed to load native binding`)
|
|
305
|
+
(processParamsTypeForArray(params))
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
const { DataType, createPointer, restorePointer, unwrapPointer, wrapPointer, freePointer, open, close, load, isNullPointer, FFITypeTag, createExternalBuffer } = nativeBinding
|
|
309
|
+
DataType.StackStruct = 999
|
|
310
|
+
DataType.Function = 998
|
|
311
|
+
DataType.Array = 997
|
|
312
|
+
DataType.StackArray = 996
|
|
313
|
+
exports.DataType = DataType
|
|
314
|
+
exports.PointerType = nativeBinding.PointerType
|
|
315
|
+
exports.open = open
|
|
316
|
+
exports.close = close
|
|
317
|
+
exports.load = load
|
|
318
|
+
exports.isNullPointer = isNullPointer
|
|
319
|
+
exports.FFITypeTag = FFITypeTag
|
|
320
|
+
const arrayDataType = [DataType.I16Array, DataType.I32Array, DataType.StringArray, DataType.DoubleArray, DataType.U8Array, DataType.FloatArray]
|
|
321
|
+
const arrayConstructor = (options) => ({
|
|
322
|
+
ffiTypeTag: FFITypeTag.Array,
|
|
323
|
+
...options
|
|
324
|
+
})
|
|
325
|
+
|
|
326
|
+
const processParamsTypeForArray = (params) => {
|
|
327
|
+
params.paramsType = params.paramsType?.map((paramType, index) => {
|
|
328
|
+
if (arrayDataType.includes(paramType)) {
|
|
329
|
+
return arrayConstructor({
|
|
330
|
+
type: paramType,
|
|
331
|
+
length: params.paramsValue[index].length,
|
|
332
|
+
})
|
|
333
|
+
}
|
|
334
|
+
return paramType
|
|
335
|
+
})
|
|
336
|
+
return params
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
const setFreePointerTag = (params) => {
|
|
340
|
+
params.paramsType = params.paramsType?.map((paramType, index) => {
|
|
341
|
+
if (paramType.ffiTypeTag === FFITypeTag.Function) {
|
|
342
|
+
paramType.needFree = true
|
|
343
|
+
}
|
|
344
|
+
return paramType
|
|
345
|
+
})
|
|
346
|
+
return params
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
const wrapLoad = (params) => {
|
|
350
|
+
if (params.freeResultMemory === undefined) {
|
|
351
|
+
params.freeResultMemory = false
|
|
352
|
+
}
|
|
353
|
+
return load(processParamsTypeForArray(params))
|
|
354
|
+
}
|
|
355
|
+
exports.load = wrapLoad
|
|
356
|
+
exports.createPointer = (params) => createPointer(processParamsTypeForArray(params))
|
|
357
|
+
exports.restorePointer = (params) => restorePointer(processParamsTypeForArray(params))
|
|
358
|
+
exports.unwrapPointer = (params) => unwrapPointer(processParamsTypeForArray(params))
|
|
359
|
+
exports.wrapPointer = (params) => wrapPointer(processParamsTypeForArray(params))
|
|
360
|
+
exports.freePointer = (params) => freePointer(setFreePointerTag(processParamsTypeForArray(params)))
|
|
361
|
+
exports.createExternalBuffer = createExternalBuffer
|
|
362
|
+
exports.arrayConstructor = arrayConstructor
|
|
363
|
+
|
|
364
|
+
exports.funcConstructor = (options) => ({
|
|
365
|
+
ffiTypeTag: FFITypeTag.Function,
|
|
366
|
+
needFree: false,
|
|
367
|
+
freeCFuncParamsMemory: false,
|
|
368
|
+
...options,
|
|
369
|
+
})
|
|
370
|
+
exports.define = (obj) => {
|
|
371
|
+
const res = {}
|
|
372
|
+
Object.entries(obj).map(([funcName, funcDesc]) => {
|
|
373
|
+
res[funcName] = (paramsValue = []) => wrapLoad({
|
|
374
|
+
...funcDesc,
|
|
375
|
+
funcName,
|
|
376
|
+
paramsValue
|
|
377
|
+
})
|
|
378
|
+
})
|
|
379
|
+
return res
|
|
380
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ffi-rs",
|
|
3
|
+
"version": "1.3.7",
|
|
4
|
+
"main": "index.js",
|
|
5
|
+
"types": "index.d.ts",
|
|
6
|
+
"description": "A module written in Rust and N-API provides interface (FFI) features for Node.js",
|
|
7
|
+
"napi": {
|
|
8
|
+
"name": "ffi-rs",
|
|
9
|
+
"triples": {
|
|
10
|
+
"additional": [
|
|
11
|
+
"aarch64-apple-darwin",
|
|
12
|
+
"aarch64-unknown-linux-gnu",
|
|
13
|
+
"aarch64-unknown-linux-musl",
|
|
14
|
+
"arm-unknown-linux-gnueabihf",
|
|
15
|
+
"i686-pc-windows-msvc",
|
|
16
|
+
"x86_64-unknown-linux-musl",
|
|
17
|
+
"aarch64-pc-windows-msvc",
|
|
18
|
+
"aarch64-linux-android"
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"author": "zhangyuang",
|
|
23
|
+
"homepage": "https://github.com/zhangyuang/node-ffi-rs#readme",
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "git+https://github.com/zhangyuang/node-ffi-rs.git"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"ffi",
|
|
30
|
+
"rust",
|
|
31
|
+
"node.js",
|
|
32
|
+
"napi"
|
|
33
|
+
],
|
|
34
|
+
"files": [
|
|
35
|
+
"index.js",
|
|
36
|
+
"index.d.ts",
|
|
37
|
+
"README.md"
|
|
38
|
+
],
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"dependencies": {},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@napi-rs/cli": "^2.15.2",
|
|
43
|
+
"@types/node": "^20.8.7",
|
|
44
|
+
"benny": "^3.7.1",
|
|
45
|
+
"conventional-changelog-cli": "^4.1.0",
|
|
46
|
+
"esno": "^4.0.0",
|
|
47
|
+
"koa": "^2.14.2",
|
|
48
|
+
"shelljs": "^0.8.5",
|
|
49
|
+
"typescript": "^5.4.5"
|
|
50
|
+
},
|
|
51
|
+
"scripts": {
|
|
52
|
+
"artifacts": "napi artifacts",
|
|
53
|
+
"build:c": "node scripts/compile.js",
|
|
54
|
+
"build:dev": "env=development node scripts/build.js",
|
|
55
|
+
"build": "node scripts/build.js",
|
|
56
|
+
"publish:npm": "node scripts/publish.js",
|
|
57
|
+
"test": "esno ./tests/index.ts",
|
|
58
|
+
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add . && git commit -m \"docs: update changelog.md\" && git push origin master",
|
|
59
|
+
"pub": "npm version patch && git push origin master --tags && npm run changelog",
|
|
60
|
+
"copy": "cp -r ./tests ./*.md ./package.json ../node-ffi-rs/",
|
|
61
|
+
"pub:alpha": "npm version prerelease --preid=alpha && git push origin master --tags"
|
|
62
|
+
},
|
|
63
|
+
"optionalDependencies": {
|
|
64
|
+
"@yuuang/ffi-rs-android-arm64": "1.3.7",
|
|
65
|
+
"@yuuang/ffi-rs-darwin-arm64": "1.3.7",
|
|
66
|
+
"@yuuang/ffi-rs-darwin-x64": "1.3.7",
|
|
67
|
+
"@yuuang/ffi-rs-linux-arm-gnueabihf": "1.3.7",
|
|
68
|
+
"@yuuang/ffi-rs-linux-arm64-gnu": "1.3.7",
|
|
69
|
+
"@yuuang/ffi-rs-linux-arm64-musl": "1.3.7",
|
|
70
|
+
"@yuuang/ffi-rs-linux-x64-gnu": "1.3.7",
|
|
71
|
+
"@yuuang/ffi-rs-linux-x64-musl": "1.3.7",
|
|
72
|
+
"@yuuang/ffi-rs-win32-arm64-msvc": "1.3.7",
|
|
73
|
+
"@yuuang/ffi-rs-win32-ia32-msvc": "1.3.7",
|
|
74
|
+
"@yuuang/ffi-rs-win32-x64-msvc": "1.3.7"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import childProcess, { execFile } from "node:child_process";
|
|
4
4
|
import fs from "node:fs";
|
|
5
|
-
import
|
|
5
|
+
import $U from "node:os";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
8
|
import process from "node:process";
|
|
@@ -49,7 +49,7 @@ function isInsideContainer() {
|
|
|
49
49
|
//#region ../../node_modules/.bun/is-wsl@3.1.1/node_modules/is-wsl/index.js
|
|
50
50
|
const isWsl = () => {
|
|
51
51
|
if (process.platform !== "linux") return false;
|
|
52
|
-
if (
|
|
52
|
+
if ($U.release().toLowerCase().includes("microsoft")) {
|
|
53
53
|
if (isInsideContainer()) return false;
|
|
54
54
|
return true;
|
|
55
55
|
}
|
|
@@ -589,4 +589,4 @@ defineLazyProperty(apps, "safari", () => detectPlatformBinary({ darwin: "Safari"
|
|
|
589
589
|
//#endregion
|
|
590
590
|
export { apps, open as default, openApp };
|
|
591
591
|
|
|
592
|
-
//# sourceMappingURL=open-
|
|
592
|
+
//# sourceMappingURL=open-D8mGyWmt.mjs.map
|