@bodhiapp/app-bindings 0.0.9 → 0.0.11

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.
Files changed (3) hide show
  1. package/index.d.ts +72 -0
  2. package/index.js +340 -0
  3. package/package.json +4 -4
package/index.d.ts ADDED
@@ -0,0 +1,72 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+
4
+ /* auto-generated by NAPI-RS */
5
+
6
+ /** Flexible configuration options for the Bodhi server that can be passed across NAPI boundary */
7
+ export interface NapiAppOptions {
8
+ /** Environment variables to set */
9
+ envVars: Record<string, string>
10
+ /** App settings (configurable via settings.yaml) */
11
+ appSettings: Record<string, string>
12
+ /** System settings (immutable) */
13
+ systemSettings: Record<string, string>
14
+ /** OAuth client ID (optional) */
15
+ clientId?: string
16
+ /** OAuth client secret (optional) */
17
+ clientSecret?: string
18
+ /** App status as string (optional) */
19
+ appStatus?: string
20
+ }
21
+ /** Create a new NapiAppOptions with empty configuration */
22
+ export declare function createNapiAppOptions(): NapiAppOptions
23
+ /** Set an environment variable */
24
+ export declare function setEnvVar(config: NapiAppOptions, key: string, value: string): NapiAppOptions
25
+ /** Set an app setting (configurable via settings.yaml) */
26
+ export declare function setAppSetting(config: NapiAppOptions, key: string, value: string): NapiAppOptions
27
+ /** Set a system setting (immutable) */
28
+ export declare function setSystemSetting(config: NapiAppOptions, key: string, value: string): NapiAppOptions
29
+ /** Set OAuth client credentials */
30
+ export declare function setClientCredentials(config: NapiAppOptions, clientId: string, clientSecret: string): NapiAppOptions
31
+ /** Set app status */
32
+ export declare function setAppStatus(config: NapiAppOptions, status: string): NapiAppOptions
33
+ export const BODHI_HOME: string
34
+ export const BODHI_HOST: string
35
+ export const BODHI_PORT: string
36
+ export const BODHI_SCHEME: string
37
+ export const BODHI_LOG_LEVEL: string
38
+ export const BODHI_LOG_STDOUT: string
39
+ export const BODHI_LOGS: string
40
+ export const BODHI_ENV_TYPE: string
41
+ export const BODHI_APP_TYPE: string
42
+ export const BODHI_VERSION: string
43
+ export const BODHI_AUTH_URL: string
44
+ export const BODHI_AUTH_REALM: string
45
+ export const BODHI_ENCRYPTION_KEY: string
46
+ export const BODHI_EXEC_LOOKUP_PATH: string
47
+ export const BODHI_EXEC_VARIANT: string
48
+ export const BODHI_KEEP_ALIVE_SECS: string
49
+ export const HF_HOME: string
50
+ export const DEFAULT_HOST: string
51
+ export const DEFAULT_PORT: number
52
+ /** The main Bodhi server wrapper for NAPI */
53
+ export declare class BodhiServer {
54
+ /** Create a new Bodhi server instance with the given configuration */
55
+ constructor(config: NapiAppOptions)
56
+ /** Get the server configuration */
57
+ get config(): NapiAppOptions
58
+ /** Get the server URL */
59
+ serverUrl(): string
60
+ /** Get the server host */
61
+ host(): string
62
+ /** Get the server port */
63
+ port(): number
64
+ /** Start the Bodhi server */
65
+ start(): Promise<void>
66
+ /** Stop the Bodhi server */
67
+ stop(): Promise<void>
68
+ /** Check if the server is running */
69
+ isRunning(): Promise<boolean>
70
+ /** Get server ping status */
71
+ ping(): Promise<boolean>
72
+ }
package/index.js ADDED
@@ -0,0 +1,340 @@
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, 'app-bindings.android-arm64.node'))
36
+ try {
37
+ if (localFileExisted) {
38
+ nativeBinding = require('./app-bindings.android-arm64.node')
39
+ } else {
40
+ nativeBinding = require('@bodhiapp/app-bindings-android-arm64')
41
+ }
42
+ } catch (e) {
43
+ loadError = e
44
+ }
45
+ break
46
+ case 'arm':
47
+ localFileExisted = existsSync(join(__dirname, 'app-bindings.android-arm-eabi.node'))
48
+ try {
49
+ if (localFileExisted) {
50
+ nativeBinding = require('./app-bindings.android-arm-eabi.node')
51
+ } else {
52
+ nativeBinding = require('@bodhiapp/app-bindings-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, 'app-bindings.win32-x64-msvc.node')
67
+ )
68
+ try {
69
+ if (localFileExisted) {
70
+ nativeBinding = require('./app-bindings.win32-x64-msvc.node')
71
+ } else {
72
+ nativeBinding = require('@bodhiapp/app-bindings-win32-x64-msvc')
73
+ }
74
+ } catch (e) {
75
+ loadError = e
76
+ }
77
+ break
78
+ case 'ia32':
79
+ localFileExisted = existsSync(
80
+ join(__dirname, 'app-bindings.win32-ia32-msvc.node')
81
+ )
82
+ try {
83
+ if (localFileExisted) {
84
+ nativeBinding = require('./app-bindings.win32-ia32-msvc.node')
85
+ } else {
86
+ nativeBinding = require('@bodhiapp/app-bindings-win32-ia32-msvc')
87
+ }
88
+ } catch (e) {
89
+ loadError = e
90
+ }
91
+ break
92
+ case 'arm64':
93
+ localFileExisted = existsSync(
94
+ join(__dirname, 'app-bindings.win32-arm64-msvc.node')
95
+ )
96
+ try {
97
+ if (localFileExisted) {
98
+ nativeBinding = require('./app-bindings.win32-arm64-msvc.node')
99
+ } else {
100
+ nativeBinding = require('@bodhiapp/app-bindings-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, 'app-bindings.darwin-universal.node'))
112
+ try {
113
+ if (localFileExisted) {
114
+ nativeBinding = require('./app-bindings.darwin-universal.node')
115
+ } else {
116
+ nativeBinding = require('@bodhiapp/app-bindings-darwin-universal')
117
+ }
118
+ break
119
+ } catch {}
120
+ switch (arch) {
121
+ case 'x64':
122
+ localFileExisted = existsSync(join(__dirname, 'app-bindings.darwin-x64.node'))
123
+ try {
124
+ if (localFileExisted) {
125
+ nativeBinding = require('./app-bindings.darwin-x64.node')
126
+ } else {
127
+ nativeBinding = require('@bodhiapp/app-bindings-darwin-x64')
128
+ }
129
+ } catch (e) {
130
+ loadError = e
131
+ }
132
+ break
133
+ case 'arm64':
134
+ localFileExisted = existsSync(
135
+ join(__dirname, 'app-bindings.darwin-arm64.node')
136
+ )
137
+ try {
138
+ if (localFileExisted) {
139
+ nativeBinding = require('./app-bindings.darwin-arm64.node')
140
+ } else {
141
+ nativeBinding = require('@bodhiapp/app-bindings-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, 'app-bindings.freebsd-x64.node'))
156
+ try {
157
+ if (localFileExisted) {
158
+ nativeBinding = require('./app-bindings.freebsd-x64.node')
159
+ } else {
160
+ nativeBinding = require('@bodhiapp/app-bindings-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, 'app-bindings.linux-x64-musl.node')
172
+ )
173
+ try {
174
+ if (localFileExisted) {
175
+ nativeBinding = require('./app-bindings.linux-x64-musl.node')
176
+ } else {
177
+ nativeBinding = require('@bodhiapp/app-bindings-linux-x64-musl')
178
+ }
179
+ } catch (e) {
180
+ loadError = e
181
+ }
182
+ } else {
183
+ localFileExisted = existsSync(
184
+ join(__dirname, 'app-bindings.linux-x64-gnu.node')
185
+ )
186
+ try {
187
+ if (localFileExisted) {
188
+ nativeBinding = require('./app-bindings.linux-x64-gnu.node')
189
+ } else {
190
+ nativeBinding = require('@bodhiapp/app-bindings-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, 'app-bindings.linux-arm64-musl.node')
201
+ )
202
+ try {
203
+ if (localFileExisted) {
204
+ nativeBinding = require('./app-bindings.linux-arm64-musl.node')
205
+ } else {
206
+ nativeBinding = require('@bodhiapp/app-bindings-linux-arm64-musl')
207
+ }
208
+ } catch (e) {
209
+ loadError = e
210
+ }
211
+ } else {
212
+ localFileExisted = existsSync(
213
+ join(__dirname, 'app-bindings.linux-arm64-gnu.node')
214
+ )
215
+ try {
216
+ if (localFileExisted) {
217
+ nativeBinding = require('./app-bindings.linux-arm64-gnu.node')
218
+ } else {
219
+ nativeBinding = require('@bodhiapp/app-bindings-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, 'app-bindings.linux-arm-musleabihf.node')
230
+ )
231
+ try {
232
+ if (localFileExisted) {
233
+ nativeBinding = require('./app-bindings.linux-arm-musleabihf.node')
234
+ } else {
235
+ nativeBinding = require('@bodhiapp/app-bindings-linux-arm-musleabihf')
236
+ }
237
+ } catch (e) {
238
+ loadError = e
239
+ }
240
+ } else {
241
+ localFileExisted = existsSync(
242
+ join(__dirname, 'app-bindings.linux-arm-gnueabihf.node')
243
+ )
244
+ try {
245
+ if (localFileExisted) {
246
+ nativeBinding = require('./app-bindings.linux-arm-gnueabihf.node')
247
+ } else {
248
+ nativeBinding = require('@bodhiapp/app-bindings-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, 'app-bindings.linux-riscv64-musl.node')
259
+ )
260
+ try {
261
+ if (localFileExisted) {
262
+ nativeBinding = require('./app-bindings.linux-riscv64-musl.node')
263
+ } else {
264
+ nativeBinding = require('@bodhiapp/app-bindings-linux-riscv64-musl')
265
+ }
266
+ } catch (e) {
267
+ loadError = e
268
+ }
269
+ } else {
270
+ localFileExisted = existsSync(
271
+ join(__dirname, 'app-bindings.linux-riscv64-gnu.node')
272
+ )
273
+ try {
274
+ if (localFileExisted) {
275
+ nativeBinding = require('./app-bindings.linux-riscv64-gnu.node')
276
+ } else {
277
+ nativeBinding = require('@bodhiapp/app-bindings-linux-riscv64-gnu')
278
+ }
279
+ } catch (e) {
280
+ loadError = e
281
+ }
282
+ }
283
+ break
284
+ case 's390x':
285
+ localFileExisted = existsSync(
286
+ join(__dirname, 'app-bindings.linux-s390x-gnu.node')
287
+ )
288
+ try {
289
+ if (localFileExisted) {
290
+ nativeBinding = require('./app-bindings.linux-s390x-gnu.node')
291
+ } else {
292
+ nativeBinding = require('@bodhiapp/app-bindings-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 { createNapiAppOptions, setEnvVar, setAppSetting, setSystemSetting, setClientCredentials, setAppStatus, BODHI_HOME, BODHI_HOST, BODHI_PORT, BODHI_SCHEME, BODHI_LOG_LEVEL, BODHI_LOG_STDOUT, BODHI_LOGS, BODHI_ENV_TYPE, BODHI_APP_TYPE, BODHI_VERSION, BODHI_AUTH_URL, BODHI_AUTH_REALM, BODHI_ENCRYPTION_KEY, BODHI_EXEC_LOOKUP_PATH, BODHI_EXEC_VARIANT, BODHI_KEEP_ALIVE_SECS, HF_HOME, DEFAULT_HOST, DEFAULT_PORT, BodhiServer } = nativeBinding
314
+
315
+ module.exports.createNapiAppOptions = createNapiAppOptions
316
+ module.exports.setEnvVar = setEnvVar
317
+ module.exports.setAppSetting = setAppSetting
318
+ module.exports.setSystemSetting = setSystemSetting
319
+ module.exports.setClientCredentials = setClientCredentials
320
+ module.exports.setAppStatus = setAppStatus
321
+ module.exports.BODHI_HOME = BODHI_HOME
322
+ module.exports.BODHI_HOST = BODHI_HOST
323
+ module.exports.BODHI_PORT = BODHI_PORT
324
+ module.exports.BODHI_SCHEME = BODHI_SCHEME
325
+ module.exports.BODHI_LOG_LEVEL = BODHI_LOG_LEVEL
326
+ module.exports.BODHI_LOG_STDOUT = BODHI_LOG_STDOUT
327
+ module.exports.BODHI_LOGS = BODHI_LOGS
328
+ module.exports.BODHI_ENV_TYPE = BODHI_ENV_TYPE
329
+ module.exports.BODHI_APP_TYPE = BODHI_APP_TYPE
330
+ module.exports.BODHI_VERSION = BODHI_VERSION
331
+ module.exports.BODHI_AUTH_URL = BODHI_AUTH_URL
332
+ module.exports.BODHI_AUTH_REALM = BODHI_AUTH_REALM
333
+ module.exports.BODHI_ENCRYPTION_KEY = BODHI_ENCRYPTION_KEY
334
+ module.exports.BODHI_EXEC_LOOKUP_PATH = BODHI_EXEC_LOOKUP_PATH
335
+ module.exports.BODHI_EXEC_VARIANT = BODHI_EXEC_VARIANT
336
+ module.exports.BODHI_KEEP_ALIVE_SECS = BODHI_KEEP_ALIVE_SECS
337
+ module.exports.HF_HOME = HF_HOME
338
+ module.exports.DEFAULT_HOST = DEFAULT_HOST
339
+ module.exports.DEFAULT_PORT = DEFAULT_PORT
340
+ module.exports.BodhiServer = BodhiServer
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bodhiapp/app-bindings",
3
- "version": "0.0.9",
3
+ "version": "0.0.11",
4
4
  "description": "NAPI-RS bindings for BodhiApp server with integrated tests",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -77,8 +77,8 @@
77
77
  "index.js"
78
78
  ],
79
79
  "optionalDependencies": {
80
- "@bodhiapp/app-bindings-darwin-arm64": "0.0.9",
81
- "@bodhiapp/app-bindings-linux-x64-gnu": "0.0.9",
82
- "@bodhiapp/app-bindings-win32-x64-msvc": "0.0.9"
80
+ "@bodhiapp/app-bindings-darwin-arm64": "0.0.11",
81
+ "@bodhiapp/app-bindings-linux-x64-gnu": "0.0.11",
82
+ "@bodhiapp/app-bindings-win32-x64-msvc": "0.0.11"
83
83
  }
84
84
  }