@vizejs/fresco-native 0.0.1-alpha.31
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/index.d.ts +228 -0
- package/index.js +349 -0
- package/package.json +60 -0
package/index.d.ts
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
|
|
4
|
+
/* auto-generated by NAPI-RS */
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Poll for input events.
|
|
8
|
+
*
|
|
9
|
+
* Returns an event if available within the timeout, or null if no event.
|
|
10
|
+
*/
|
|
11
|
+
export declare function pollEvent(timeoutMs: number): InputEventNapi | null
|
|
12
|
+
/** Poll for input events without blocking. */
|
|
13
|
+
export declare function pollEventNonBlocking(): InputEventNapi | null
|
|
14
|
+
/** Read an input event, blocking until one is available. */
|
|
15
|
+
export declare function readEvent(): InputEventNapi
|
|
16
|
+
/** Get current IME state. */
|
|
17
|
+
export declare function getImeState(): ImeStateNapi
|
|
18
|
+
/** Enable IME. */
|
|
19
|
+
export declare function enableIme(): boolean
|
|
20
|
+
/** Disable IME. */
|
|
21
|
+
export declare function disableIme(): boolean
|
|
22
|
+
/** Set IME input mode. */
|
|
23
|
+
export declare function setImeMode(mode: string): void
|
|
24
|
+
/** Initialize layout engine. */
|
|
25
|
+
export declare function initLayout(): void
|
|
26
|
+
/** Create a new layout node. */
|
|
27
|
+
export declare function createLayoutNode(style?: FlexStyleNapi | undefined | null): number
|
|
28
|
+
/** Create a new leaf layout node with measured size. */
|
|
29
|
+
export declare function createLayoutLeaf(width: number, height: number, style?: FlexStyleNapi | undefined | null): number
|
|
30
|
+
/** Set layout root node. */
|
|
31
|
+
export declare function setLayoutRoot(id: number): void
|
|
32
|
+
/** Add child to parent node. */
|
|
33
|
+
export declare function addLayoutChild(parent: number, child: number): void
|
|
34
|
+
/** Remove child from parent node. */
|
|
35
|
+
export declare function removeLayoutChild(parent: number, child: number): void
|
|
36
|
+
/** Update node style. */
|
|
37
|
+
export declare function setLayoutStyle(id: number, style: FlexStyleNapi): void
|
|
38
|
+
/** Remove a node. */
|
|
39
|
+
export declare function removeLayoutNode(id: number): void
|
|
40
|
+
/** Compute layout. */
|
|
41
|
+
export declare function computeLayout(width: number, height: number): void
|
|
42
|
+
/** Get layout result for a node. */
|
|
43
|
+
export declare function getLayout(id: number): LayoutResultNapi | null
|
|
44
|
+
/** Get all layout results. */
|
|
45
|
+
export declare function getAllLayouts(): Array<LayoutResultNapi>
|
|
46
|
+
/** Clear layout engine. */
|
|
47
|
+
export declare function clearLayout(): void
|
|
48
|
+
/** Render text at position. */
|
|
49
|
+
export declare function renderText(x: number, y: number, text: string, style?: StyleNapi | undefined | null): void
|
|
50
|
+
/** Render a box (rectangle). */
|
|
51
|
+
export declare function renderBox(x: number, y: number, width: number, height: number, border?: string | undefined | null, style?: StyleNapi | undefined | null): void
|
|
52
|
+
/** Fill a rectangle with a character. */
|
|
53
|
+
export declare function fillRect(x: number, y: number, width: number, height: number, char?: string | undefined | null, style?: StyleNapi | undefined | null): void
|
|
54
|
+
/** Clear a rectangular area. */
|
|
55
|
+
export declare function clearRect(x: number, y: number, width: number, height: number): void
|
|
56
|
+
/** Set cursor position. */
|
|
57
|
+
export declare function setCursor(x: number, y: number): void
|
|
58
|
+
/** Show cursor. */
|
|
59
|
+
export declare function showCursor(): void
|
|
60
|
+
/** Hide cursor. */
|
|
61
|
+
export declare function hideCursor(): void
|
|
62
|
+
/** Set cursor shape. */
|
|
63
|
+
export declare function setCursorShape(shape: string): void
|
|
64
|
+
/** Render a tree of nodes. */
|
|
65
|
+
export declare function renderTree(nodes: Array<RenderNodeNapi>): void
|
|
66
|
+
/** Initialize terminal for TUI mode. */
|
|
67
|
+
export declare function initTerminal(): void
|
|
68
|
+
/** Initialize terminal with mouse capture. */
|
|
69
|
+
export declare function initTerminalWithMouse(): void
|
|
70
|
+
/** Restore terminal to normal mode. */
|
|
71
|
+
export declare function restoreTerminal(): void
|
|
72
|
+
/** Get terminal info. */
|
|
73
|
+
export declare function getTerminalInfo(): TerminalInfoNapi
|
|
74
|
+
/** Clear the screen. */
|
|
75
|
+
export declare function clearScreen(): void
|
|
76
|
+
/** Flush the terminal buffer. */
|
|
77
|
+
export declare function flushTerminal(): void
|
|
78
|
+
/** Sync terminal size (call after resize events). */
|
|
79
|
+
export declare function syncTerminalSize(): boolean
|
|
80
|
+
/** Style options for NAPI. */
|
|
81
|
+
export interface StyleNapi {
|
|
82
|
+
/** Foreground color (hex or named) */
|
|
83
|
+
fg?: string
|
|
84
|
+
/** Background color (hex or named) */
|
|
85
|
+
bg?: string
|
|
86
|
+
/** Bold text */
|
|
87
|
+
bold?: boolean
|
|
88
|
+
/** Dim text */
|
|
89
|
+
dim?: boolean
|
|
90
|
+
/** Italic text */
|
|
91
|
+
italic?: boolean
|
|
92
|
+
/** Underline text */
|
|
93
|
+
underline?: boolean
|
|
94
|
+
/** Strikethrough text */
|
|
95
|
+
strikethrough?: boolean
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Flex style options for NAPI.
|
|
99
|
+
* NAPI automatically converts JavaScript camelCase to Rust snake_case.
|
|
100
|
+
*/
|
|
101
|
+
export interface FlexStyleNapi {
|
|
102
|
+
display?: string
|
|
103
|
+
flexDirection?: string
|
|
104
|
+
flexWrap?: string
|
|
105
|
+
justifyContent?: string
|
|
106
|
+
alignItems?: string
|
|
107
|
+
alignSelf?: string
|
|
108
|
+
alignContent?: string
|
|
109
|
+
flexGrow?: number
|
|
110
|
+
flexShrink?: number
|
|
111
|
+
width?: string
|
|
112
|
+
height?: string
|
|
113
|
+
minWidth?: string
|
|
114
|
+
minHeight?: string
|
|
115
|
+
maxWidth?: string
|
|
116
|
+
maxHeight?: string
|
|
117
|
+
padding?: number
|
|
118
|
+
paddingTop?: number
|
|
119
|
+
paddingRight?: number
|
|
120
|
+
paddingBottom?: number
|
|
121
|
+
paddingLeft?: number
|
|
122
|
+
margin?: number
|
|
123
|
+
marginTop?: number
|
|
124
|
+
marginRight?: number
|
|
125
|
+
marginBottom?: number
|
|
126
|
+
marginLeft?: number
|
|
127
|
+
gap?: number
|
|
128
|
+
}
|
|
129
|
+
/** Render node for NAPI. */
|
|
130
|
+
export interface RenderNodeNapi {
|
|
131
|
+
/** Node ID */
|
|
132
|
+
id: number
|
|
133
|
+
/** Node type: "box" | "text" | "input" */
|
|
134
|
+
nodeType: string
|
|
135
|
+
/** Text content (for text nodes) */
|
|
136
|
+
text?: string
|
|
137
|
+
/** Whether text should wrap */
|
|
138
|
+
wrap?: boolean
|
|
139
|
+
/** Input value (for input nodes) */
|
|
140
|
+
value?: string
|
|
141
|
+
/** Placeholder text (for input nodes) */
|
|
142
|
+
placeholder?: string
|
|
143
|
+
/** Whether input is focused */
|
|
144
|
+
focused?: boolean
|
|
145
|
+
/** Cursor position in input */
|
|
146
|
+
cursor?: number
|
|
147
|
+
/** Whether to mask input (password) */
|
|
148
|
+
mask?: boolean
|
|
149
|
+
/** Flex style */
|
|
150
|
+
style?: FlexStyleNapi
|
|
151
|
+
/** Visual appearance */
|
|
152
|
+
appearance?: StyleNapi
|
|
153
|
+
/** Border style: "none" | "single" | "double" | "rounded" | "heavy" */
|
|
154
|
+
border?: string
|
|
155
|
+
/** Child node IDs */
|
|
156
|
+
children?: Array<number>
|
|
157
|
+
}
|
|
158
|
+
/** Layout result for NAPI. */
|
|
159
|
+
export interface LayoutResultNapi {
|
|
160
|
+
/** Node ID */
|
|
161
|
+
id: number
|
|
162
|
+
/** X position */
|
|
163
|
+
x: number
|
|
164
|
+
/** Y position */
|
|
165
|
+
y: number
|
|
166
|
+
/** Width */
|
|
167
|
+
width: number
|
|
168
|
+
/** Height */
|
|
169
|
+
height: number
|
|
170
|
+
}
|
|
171
|
+
/** Input event for NAPI. */
|
|
172
|
+
export interface InputEventNapi {
|
|
173
|
+
/** Event type: "key" | "mouse" | "resize" | "focus" | "paste" */
|
|
174
|
+
eventType: string
|
|
175
|
+
/** Key code (for key events) */
|
|
176
|
+
key?: string
|
|
177
|
+
/** Character (for key events) */
|
|
178
|
+
char?: string
|
|
179
|
+
/** Modifiers: { ctrl, alt, shift, meta } */
|
|
180
|
+
modifiers?: ModifiersNapi
|
|
181
|
+
/** Mouse button (for mouse events) */
|
|
182
|
+
button?: string
|
|
183
|
+
/** Mouse x position */
|
|
184
|
+
x?: number
|
|
185
|
+
/** Mouse y position */
|
|
186
|
+
y?: number
|
|
187
|
+
/** New width (for resize events) */
|
|
188
|
+
width?: number
|
|
189
|
+
/** New height (for resize events) */
|
|
190
|
+
height?: number
|
|
191
|
+
/** Pasted text (for paste events) */
|
|
192
|
+
text?: string
|
|
193
|
+
}
|
|
194
|
+
/** Key modifiers for NAPI. */
|
|
195
|
+
export interface ModifiersNapi {
|
|
196
|
+
ctrl: boolean
|
|
197
|
+
alt: boolean
|
|
198
|
+
shift: boolean
|
|
199
|
+
meta: boolean
|
|
200
|
+
}
|
|
201
|
+
/** IME state for NAPI. */
|
|
202
|
+
export interface ImeStateNapi {
|
|
203
|
+
/** Whether IME is active */
|
|
204
|
+
active: boolean
|
|
205
|
+
/** Current input mode */
|
|
206
|
+
mode: string
|
|
207
|
+
/** Whether currently composing */
|
|
208
|
+
composing: boolean
|
|
209
|
+
/** Preedit text */
|
|
210
|
+
preedit?: string
|
|
211
|
+
/** Cursor position in preedit */
|
|
212
|
+
preeditCursor?: number
|
|
213
|
+
/** Candidate list */
|
|
214
|
+
candidates?: Array<string>
|
|
215
|
+
/** Selected candidate index */
|
|
216
|
+
selected?: number
|
|
217
|
+
}
|
|
218
|
+
/** Terminal info for NAPI. */
|
|
219
|
+
export interface TerminalInfoNapi {
|
|
220
|
+
/** Terminal width in columns */
|
|
221
|
+
width: number
|
|
222
|
+
/** Terminal height in rows */
|
|
223
|
+
height: number
|
|
224
|
+
/** Whether colors are supported */
|
|
225
|
+
colors: boolean
|
|
226
|
+
/** Whether true color (24-bit) is supported */
|
|
227
|
+
trueColor: boolean
|
|
228
|
+
}
|
package/index.js
ADDED
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/* prettier-ignore */
|
|
4
|
+
|
|
5
|
+
/* auto-generated by NAPI-RS */
|
|
6
|
+
|
|
7
|
+
const { existsSync, readFileSync } = require('fs')
|
|
8
|
+
const { join } = require('path')
|
|
9
|
+
|
|
10
|
+
const { platform, arch } = process
|
|
11
|
+
|
|
12
|
+
let nativeBinding = null
|
|
13
|
+
let localFileExisted = false
|
|
14
|
+
let loadError = null
|
|
15
|
+
|
|
16
|
+
function isMusl() {
|
|
17
|
+
// For Node 10
|
|
18
|
+
if (!process.report || typeof process.report.getReport !== 'function') {
|
|
19
|
+
try {
|
|
20
|
+
const lddPath = require('child_process').execSync('which ldd').toString().trim()
|
|
21
|
+
return readFileSync(lddPath, 'utf8').includes('musl')
|
|
22
|
+
} catch (e) {
|
|
23
|
+
return true
|
|
24
|
+
}
|
|
25
|
+
} else {
|
|
26
|
+
const { glibcVersionRuntime } = process.report.getReport().header
|
|
27
|
+
return !glibcVersionRuntime
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
switch (platform) {
|
|
32
|
+
case 'android':
|
|
33
|
+
switch (arch) {
|
|
34
|
+
case 'arm64':
|
|
35
|
+
localFileExisted = existsSync(join(__dirname, 'vize-fresco.android-arm64.node'))
|
|
36
|
+
try {
|
|
37
|
+
if (localFileExisted) {
|
|
38
|
+
nativeBinding = require('./vize-fresco.android-arm64.node')
|
|
39
|
+
} else {
|
|
40
|
+
nativeBinding = require('@vizejs/fresco-native-android-arm64')
|
|
41
|
+
}
|
|
42
|
+
} catch (e) {
|
|
43
|
+
loadError = e
|
|
44
|
+
}
|
|
45
|
+
break
|
|
46
|
+
case 'arm':
|
|
47
|
+
localFileExisted = existsSync(join(__dirname, 'vize-fresco.android-arm-eabi.node'))
|
|
48
|
+
try {
|
|
49
|
+
if (localFileExisted) {
|
|
50
|
+
nativeBinding = require('./vize-fresco.android-arm-eabi.node')
|
|
51
|
+
} else {
|
|
52
|
+
nativeBinding = require('@vizejs/fresco-native-android-arm-eabi')
|
|
53
|
+
}
|
|
54
|
+
} catch (e) {
|
|
55
|
+
loadError = e
|
|
56
|
+
}
|
|
57
|
+
break
|
|
58
|
+
default:
|
|
59
|
+
throw new Error(`Unsupported architecture on Android ${arch}`)
|
|
60
|
+
}
|
|
61
|
+
break
|
|
62
|
+
case 'win32':
|
|
63
|
+
switch (arch) {
|
|
64
|
+
case 'x64':
|
|
65
|
+
localFileExisted = existsSync(
|
|
66
|
+
join(__dirname, 'vize-fresco.win32-x64-msvc.node')
|
|
67
|
+
)
|
|
68
|
+
try {
|
|
69
|
+
if (localFileExisted) {
|
|
70
|
+
nativeBinding = require('./vize-fresco.win32-x64-msvc.node')
|
|
71
|
+
} else {
|
|
72
|
+
nativeBinding = require('@vizejs/fresco-native-win32-x64-msvc')
|
|
73
|
+
}
|
|
74
|
+
} catch (e) {
|
|
75
|
+
loadError = e
|
|
76
|
+
}
|
|
77
|
+
break
|
|
78
|
+
case 'ia32':
|
|
79
|
+
localFileExisted = existsSync(
|
|
80
|
+
join(__dirname, 'vize-fresco.win32-ia32-msvc.node')
|
|
81
|
+
)
|
|
82
|
+
try {
|
|
83
|
+
if (localFileExisted) {
|
|
84
|
+
nativeBinding = require('./vize-fresco.win32-ia32-msvc.node')
|
|
85
|
+
} else {
|
|
86
|
+
nativeBinding = require('@vizejs/fresco-native-win32-ia32-msvc')
|
|
87
|
+
}
|
|
88
|
+
} catch (e) {
|
|
89
|
+
loadError = e
|
|
90
|
+
}
|
|
91
|
+
break
|
|
92
|
+
case 'arm64':
|
|
93
|
+
localFileExisted = existsSync(
|
|
94
|
+
join(__dirname, 'vize-fresco.win32-arm64-msvc.node')
|
|
95
|
+
)
|
|
96
|
+
try {
|
|
97
|
+
if (localFileExisted) {
|
|
98
|
+
nativeBinding = require('./vize-fresco.win32-arm64-msvc.node')
|
|
99
|
+
} else {
|
|
100
|
+
nativeBinding = require('@vizejs/fresco-native-win32-arm64-msvc')
|
|
101
|
+
}
|
|
102
|
+
} catch (e) {
|
|
103
|
+
loadError = e
|
|
104
|
+
}
|
|
105
|
+
break
|
|
106
|
+
default:
|
|
107
|
+
throw new Error(`Unsupported architecture on Windows: ${arch}`)
|
|
108
|
+
}
|
|
109
|
+
break
|
|
110
|
+
case 'darwin':
|
|
111
|
+
localFileExisted = existsSync(join(__dirname, 'vize-fresco.darwin-universal.node'))
|
|
112
|
+
try {
|
|
113
|
+
if (localFileExisted) {
|
|
114
|
+
nativeBinding = require('./vize-fresco.darwin-universal.node')
|
|
115
|
+
} else {
|
|
116
|
+
nativeBinding = require('@vizejs/fresco-native-darwin-universal')
|
|
117
|
+
}
|
|
118
|
+
break
|
|
119
|
+
} catch {}
|
|
120
|
+
switch (arch) {
|
|
121
|
+
case 'x64':
|
|
122
|
+
localFileExisted = existsSync(join(__dirname, 'vize-fresco.darwin-x64.node'))
|
|
123
|
+
try {
|
|
124
|
+
if (localFileExisted) {
|
|
125
|
+
nativeBinding = require('./vize-fresco.darwin-x64.node')
|
|
126
|
+
} else {
|
|
127
|
+
nativeBinding = require('@vizejs/fresco-native-darwin-x64')
|
|
128
|
+
}
|
|
129
|
+
} catch (e) {
|
|
130
|
+
loadError = e
|
|
131
|
+
}
|
|
132
|
+
break
|
|
133
|
+
case 'arm64':
|
|
134
|
+
localFileExisted = existsSync(
|
|
135
|
+
join(__dirname, 'vize-fresco.darwin-arm64.node')
|
|
136
|
+
)
|
|
137
|
+
try {
|
|
138
|
+
if (localFileExisted) {
|
|
139
|
+
nativeBinding = require('./vize-fresco.darwin-arm64.node')
|
|
140
|
+
} else {
|
|
141
|
+
nativeBinding = require('@vizejs/fresco-native-darwin-arm64')
|
|
142
|
+
}
|
|
143
|
+
} catch (e) {
|
|
144
|
+
loadError = e
|
|
145
|
+
}
|
|
146
|
+
break
|
|
147
|
+
default:
|
|
148
|
+
throw new Error(`Unsupported architecture on macOS: ${arch}`)
|
|
149
|
+
}
|
|
150
|
+
break
|
|
151
|
+
case 'freebsd':
|
|
152
|
+
if (arch !== 'x64') {
|
|
153
|
+
throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
|
|
154
|
+
}
|
|
155
|
+
localFileExisted = existsSync(join(__dirname, 'vize-fresco.freebsd-x64.node'))
|
|
156
|
+
try {
|
|
157
|
+
if (localFileExisted) {
|
|
158
|
+
nativeBinding = require('./vize-fresco.freebsd-x64.node')
|
|
159
|
+
} else {
|
|
160
|
+
nativeBinding = require('@vizejs/fresco-native-freebsd-x64')
|
|
161
|
+
}
|
|
162
|
+
} catch (e) {
|
|
163
|
+
loadError = e
|
|
164
|
+
}
|
|
165
|
+
break
|
|
166
|
+
case 'linux':
|
|
167
|
+
switch (arch) {
|
|
168
|
+
case 'x64':
|
|
169
|
+
if (isMusl()) {
|
|
170
|
+
localFileExisted = existsSync(
|
|
171
|
+
join(__dirname, 'vize-fresco.linux-x64-musl.node')
|
|
172
|
+
)
|
|
173
|
+
try {
|
|
174
|
+
if (localFileExisted) {
|
|
175
|
+
nativeBinding = require('./vize-fresco.linux-x64-musl.node')
|
|
176
|
+
} else {
|
|
177
|
+
nativeBinding = require('@vizejs/fresco-native-linux-x64-musl')
|
|
178
|
+
}
|
|
179
|
+
} catch (e) {
|
|
180
|
+
loadError = e
|
|
181
|
+
}
|
|
182
|
+
} else {
|
|
183
|
+
localFileExisted = existsSync(
|
|
184
|
+
join(__dirname, 'vize-fresco.linux-x64-gnu.node')
|
|
185
|
+
)
|
|
186
|
+
try {
|
|
187
|
+
if (localFileExisted) {
|
|
188
|
+
nativeBinding = require('./vize-fresco.linux-x64-gnu.node')
|
|
189
|
+
} else {
|
|
190
|
+
nativeBinding = require('@vizejs/fresco-native-linux-x64-gnu')
|
|
191
|
+
}
|
|
192
|
+
} catch (e) {
|
|
193
|
+
loadError = e
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
break
|
|
197
|
+
case 'arm64':
|
|
198
|
+
if (isMusl()) {
|
|
199
|
+
localFileExisted = existsSync(
|
|
200
|
+
join(__dirname, 'vize-fresco.linux-arm64-musl.node')
|
|
201
|
+
)
|
|
202
|
+
try {
|
|
203
|
+
if (localFileExisted) {
|
|
204
|
+
nativeBinding = require('./vize-fresco.linux-arm64-musl.node')
|
|
205
|
+
} else {
|
|
206
|
+
nativeBinding = require('@vizejs/fresco-native-linux-arm64-musl')
|
|
207
|
+
}
|
|
208
|
+
} catch (e) {
|
|
209
|
+
loadError = e
|
|
210
|
+
}
|
|
211
|
+
} else {
|
|
212
|
+
localFileExisted = existsSync(
|
|
213
|
+
join(__dirname, 'vize-fresco.linux-arm64-gnu.node')
|
|
214
|
+
)
|
|
215
|
+
try {
|
|
216
|
+
if (localFileExisted) {
|
|
217
|
+
nativeBinding = require('./vize-fresco.linux-arm64-gnu.node')
|
|
218
|
+
} else {
|
|
219
|
+
nativeBinding = require('@vizejs/fresco-native-linux-arm64-gnu')
|
|
220
|
+
}
|
|
221
|
+
} catch (e) {
|
|
222
|
+
loadError = e
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
break
|
|
226
|
+
case 'arm':
|
|
227
|
+
if (isMusl()) {
|
|
228
|
+
localFileExisted = existsSync(
|
|
229
|
+
join(__dirname, 'vize-fresco.linux-arm-musleabihf.node')
|
|
230
|
+
)
|
|
231
|
+
try {
|
|
232
|
+
if (localFileExisted) {
|
|
233
|
+
nativeBinding = require('./vize-fresco.linux-arm-musleabihf.node')
|
|
234
|
+
} else {
|
|
235
|
+
nativeBinding = require('@vizejs/fresco-native-linux-arm-musleabihf')
|
|
236
|
+
}
|
|
237
|
+
} catch (e) {
|
|
238
|
+
loadError = e
|
|
239
|
+
}
|
|
240
|
+
} else {
|
|
241
|
+
localFileExisted = existsSync(
|
|
242
|
+
join(__dirname, 'vize-fresco.linux-arm-gnueabihf.node')
|
|
243
|
+
)
|
|
244
|
+
try {
|
|
245
|
+
if (localFileExisted) {
|
|
246
|
+
nativeBinding = require('./vize-fresco.linux-arm-gnueabihf.node')
|
|
247
|
+
} else {
|
|
248
|
+
nativeBinding = require('@vizejs/fresco-native-linux-arm-gnueabihf')
|
|
249
|
+
}
|
|
250
|
+
} catch (e) {
|
|
251
|
+
loadError = e
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
break
|
|
255
|
+
case 'riscv64':
|
|
256
|
+
if (isMusl()) {
|
|
257
|
+
localFileExisted = existsSync(
|
|
258
|
+
join(__dirname, 'vize-fresco.linux-riscv64-musl.node')
|
|
259
|
+
)
|
|
260
|
+
try {
|
|
261
|
+
if (localFileExisted) {
|
|
262
|
+
nativeBinding = require('./vize-fresco.linux-riscv64-musl.node')
|
|
263
|
+
} else {
|
|
264
|
+
nativeBinding = require('@vizejs/fresco-native-linux-riscv64-musl')
|
|
265
|
+
}
|
|
266
|
+
} catch (e) {
|
|
267
|
+
loadError = e
|
|
268
|
+
}
|
|
269
|
+
} else {
|
|
270
|
+
localFileExisted = existsSync(
|
|
271
|
+
join(__dirname, 'vize-fresco.linux-riscv64-gnu.node')
|
|
272
|
+
)
|
|
273
|
+
try {
|
|
274
|
+
if (localFileExisted) {
|
|
275
|
+
nativeBinding = require('./vize-fresco.linux-riscv64-gnu.node')
|
|
276
|
+
} else {
|
|
277
|
+
nativeBinding = require('@vizejs/fresco-native-linux-riscv64-gnu')
|
|
278
|
+
}
|
|
279
|
+
} catch (e) {
|
|
280
|
+
loadError = e
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
break
|
|
284
|
+
case 's390x':
|
|
285
|
+
localFileExisted = existsSync(
|
|
286
|
+
join(__dirname, 'vize-fresco.linux-s390x-gnu.node')
|
|
287
|
+
)
|
|
288
|
+
try {
|
|
289
|
+
if (localFileExisted) {
|
|
290
|
+
nativeBinding = require('./vize-fresco.linux-s390x-gnu.node')
|
|
291
|
+
} else {
|
|
292
|
+
nativeBinding = require('@vizejs/fresco-native-linux-s390x-gnu')
|
|
293
|
+
}
|
|
294
|
+
} catch (e) {
|
|
295
|
+
loadError = e
|
|
296
|
+
}
|
|
297
|
+
break
|
|
298
|
+
default:
|
|
299
|
+
throw new Error(`Unsupported architecture on Linux: ${arch}`)
|
|
300
|
+
}
|
|
301
|
+
break
|
|
302
|
+
default:
|
|
303
|
+
throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
if (!nativeBinding) {
|
|
307
|
+
if (loadError) {
|
|
308
|
+
throw loadError
|
|
309
|
+
}
|
|
310
|
+
throw new Error(`Failed to load native binding`)
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
const { pollEvent, pollEventNonBlocking, readEvent, getImeState, enableIme, disableIme, setImeMode, initLayout, createLayoutNode, createLayoutLeaf, setLayoutRoot, addLayoutChild, removeLayoutChild, setLayoutStyle, removeLayoutNode, computeLayout, getLayout, getAllLayouts, clearLayout, renderText, renderBox, fillRect, clearRect, setCursor, showCursor, hideCursor, setCursorShape, renderTree, initTerminal, initTerminalWithMouse, restoreTerminal, getTerminalInfo, clearScreen, flushTerminal, syncTerminalSize } = nativeBinding
|
|
314
|
+
|
|
315
|
+
module.exports.pollEvent = pollEvent
|
|
316
|
+
module.exports.pollEventNonBlocking = pollEventNonBlocking
|
|
317
|
+
module.exports.readEvent = readEvent
|
|
318
|
+
module.exports.getImeState = getImeState
|
|
319
|
+
module.exports.enableIme = enableIme
|
|
320
|
+
module.exports.disableIme = disableIme
|
|
321
|
+
module.exports.setImeMode = setImeMode
|
|
322
|
+
module.exports.initLayout = initLayout
|
|
323
|
+
module.exports.createLayoutNode = createLayoutNode
|
|
324
|
+
module.exports.createLayoutLeaf = createLayoutLeaf
|
|
325
|
+
module.exports.setLayoutRoot = setLayoutRoot
|
|
326
|
+
module.exports.addLayoutChild = addLayoutChild
|
|
327
|
+
module.exports.removeLayoutChild = removeLayoutChild
|
|
328
|
+
module.exports.setLayoutStyle = setLayoutStyle
|
|
329
|
+
module.exports.removeLayoutNode = removeLayoutNode
|
|
330
|
+
module.exports.computeLayout = computeLayout
|
|
331
|
+
module.exports.getLayout = getLayout
|
|
332
|
+
module.exports.getAllLayouts = getAllLayouts
|
|
333
|
+
module.exports.clearLayout = clearLayout
|
|
334
|
+
module.exports.renderText = renderText
|
|
335
|
+
module.exports.renderBox = renderBox
|
|
336
|
+
module.exports.fillRect = fillRect
|
|
337
|
+
module.exports.clearRect = clearRect
|
|
338
|
+
module.exports.setCursor = setCursor
|
|
339
|
+
module.exports.showCursor = showCursor
|
|
340
|
+
module.exports.hideCursor = hideCursor
|
|
341
|
+
module.exports.setCursorShape = setCursorShape
|
|
342
|
+
module.exports.renderTree = renderTree
|
|
343
|
+
module.exports.initTerminal = initTerminal
|
|
344
|
+
module.exports.initTerminalWithMouse = initTerminalWithMouse
|
|
345
|
+
module.exports.restoreTerminal = restoreTerminal
|
|
346
|
+
module.exports.getTerminalInfo = getTerminalInfo
|
|
347
|
+
module.exports.clearScreen = clearScreen
|
|
348
|
+
module.exports.flushTerminal = flushTerminal
|
|
349
|
+
module.exports.syncTerminalSize = syncTerminalSize
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vizejs/fresco-native",
|
|
3
|
+
"version": "0.0.1-alpha.31",
|
|
4
|
+
"description": "Vue TUI framework - Native bindings",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"provenance": true,
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"main": "index.js",
|
|
10
|
+
"types": "index.d.ts",
|
|
11
|
+
"napi": {
|
|
12
|
+
"name": "vize-fresco",
|
|
13
|
+
"triples": {
|
|
14
|
+
"defaults": true,
|
|
15
|
+
"additional": [
|
|
16
|
+
"x86_64-unknown-linux-musl",
|
|
17
|
+
"aarch64-unknown-linux-gnu",
|
|
18
|
+
"aarch64-unknown-linux-musl",
|
|
19
|
+
"aarch64-apple-darwin",
|
|
20
|
+
"aarch64-pc-windows-msvc"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"index.js",
|
|
26
|
+
"index.d.ts"
|
|
27
|
+
],
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "napi build --platform --release --cargo-cwd=../../crates/vize_fresco --cargo-name=vize_fresco --features napi",
|
|
30
|
+
"build:debug": "napi build --platform --cargo-cwd=../../crates/vize_fresco --cargo-name=vize_fresco --features napi",
|
|
31
|
+
"prepublishOnly": "napi prepublish -t npm"
|
|
32
|
+
},
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "https://github.com/ubugeeei/vize"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [
|
|
38
|
+
"vue",
|
|
39
|
+
"tui",
|
|
40
|
+
"terminal",
|
|
41
|
+
"native",
|
|
42
|
+
"napi",
|
|
43
|
+
"vize",
|
|
44
|
+
"fresco"
|
|
45
|
+
],
|
|
46
|
+
"license": "MIT",
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@napi-rs/cli": "^2.18.0"
|
|
49
|
+
},
|
|
50
|
+
"optionalDependencies": {
|
|
51
|
+
"@vizejs/fresco-native-win32-x64-msvc": "0.0.1-alpha.31",
|
|
52
|
+
"@vizejs/fresco-native-darwin-x64": "0.0.1-alpha.31",
|
|
53
|
+
"@vizejs/fresco-native-linux-x64-gnu": "0.0.1-alpha.31",
|
|
54
|
+
"@vizejs/fresco-native-linux-x64-musl": "0.0.1-alpha.31",
|
|
55
|
+
"@vizejs/fresco-native-linux-arm64-gnu": "0.0.1-alpha.31",
|
|
56
|
+
"@vizejs/fresco-native-linux-arm64-musl": "0.0.1-alpha.31",
|
|
57
|
+
"@vizejs/fresco-native-darwin-arm64": "0.0.1-alpha.31",
|
|
58
|
+
"@vizejs/fresco-native-win32-arm64-msvc": "0.0.1-alpha.31"
|
|
59
|
+
}
|
|
60
|
+
}
|