Skip to content

Commit

Permalink
release: v0.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
beni69 committed Aug 6, 2023
1 parent 8c3f8ce commit b1dca1b
Show file tree
Hide file tree
Showing 11 changed files with 348 additions and 1,018 deletions.
2 changes: 0 additions & 2 deletions node-ffi/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -189,5 +189,3 @@ $RECYCLE.BIN/
.yarn

*.node
/index.js
/index.d.ts
48 changes: 48 additions & 0 deletions node-ffi/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/* tslint:disable */
/* eslint-disable */

/* auto-generated by NAPI-RS */

export function sum(a: number, b: number): number
export function sleepBlocking(ms: number): void
export function sleep(ms: number): Promise<void>
export function throws(n: number): Promise<void>
export const enum EventType {
TrackSensor = 'TrackSensor',
UltraSensor = 'UltraSensor',
GpioPin = 'GpioPin',
CamlocConnect = 'CamlocConnect',
CamlocDisconnect = 'CamlocDisconnect',
CamlocPosition = 'CamlocPosition',
CamlocInfoUpdate = 'CamlocInfoUpdate'
}
export const enum PinMode {
input = 'input',
output = 'output'
}
export interface Position {
x: number
y: number
rotation: number
}
export type JsRobot = Robot
export class Robot {
constructor()
static connect(addr: string): Promise<Robot>
disconnect(): void
nop(): Promise<void>
getUptime(): Promise<number>
drive(left: number, right: number): Promise<void>
led(r: boolean, g: boolean, b: boolean): Promise<void>
rolandServo(degree: number): Promise<void>
buzzer(pw: number): Promise<void>
trackSensor(): Promise<boolean[]>
ultraSensor(): Promise<number>
readPin(pin: number): Promise<boolean>
writePin(pin: number, value: boolean): Promise<void>
pwm(pin: number, hz: number, cycle: number): Promise<void>
servo(pin: number, degree: number): Promise<void>
pinMode(pin: number, mode: JsPinMode): Promise<void>
getPosition(): Promise<JsPosition | null>
subscribe(ev: JsEventType, evArgs: any, handler: (...args: any[]) => any): void
}
263 changes: 263 additions & 0 deletions node-ffi/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,263 @@
/* tslint:disable */
/* eslint-disable */
/* prettier-ignore */

/* auto-generated by NAPI-RS */

const { existsSync, readFileSync } = require('fs')
const { join } = require('path')

const { platform, arch } = process

let nativeBinding = null
let localFileExisted = false
let loadError = null

function isMusl() {
// For Node 10
if (!process.report || typeof process.report.getReport !== 'function') {
try {
const lddPath = require('child_process').execSync('which ldd').toString().trim()
return readFileSync(lddPath, 'utf8').includes('musl')
} catch (e) {
return true
}
} else {
const { glibcVersionRuntime } = process.report.getReport().header
return !glibcVersionRuntime
}
}

switch (platform) {
case 'android':
switch (arch) {
case 'arm64':
localFileExisted = existsSync(join(__dirname, 'roblib-client-node.android-arm64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.android-arm64.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-android-arm64')
}
} catch (e) {
loadError = e
}
break
case 'arm':
localFileExisted = existsSync(join(__dirname, 'roblib-client-node.android-arm-eabi.node'))
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.android-arm-eabi.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-android-arm-eabi')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Android ${arch}`)
}
break
case 'win32':
switch (arch) {
case 'x64':
localFileExisted = existsSync(
join(__dirname, 'roblib-client-node.win32-x64-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.win32-x64-msvc.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-win32-x64-msvc')
}
} catch (e) {
loadError = e
}
break
case 'ia32':
localFileExisted = existsSync(
join(__dirname, 'roblib-client-node.win32-ia32-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.win32-ia32-msvc.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-win32-ia32-msvc')
}
} catch (e) {
loadError = e
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'roblib-client-node.win32-arm64-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.win32-arm64-msvc.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-win32-arm64-msvc')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Windows: ${arch}`)
}
break
case 'darwin':
localFileExisted = existsSync(join(__dirname, 'roblib-client-node.darwin-universal.node'))
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.darwin-universal.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-darwin-universal')
}
break
} catch {}
switch (arch) {
case 'x64':
localFileExisted = existsSync(join(__dirname, 'roblib-client-node.darwin-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.darwin-x64.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-darwin-x64')
}
} catch (e) {
loadError = e
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'roblib-client-node.darwin-arm64.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.darwin-arm64.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-darwin-arm64')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on macOS: ${arch}`)
}
break
case 'freebsd':
if (arch !== 'x64') {
throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
}
localFileExisted = existsSync(join(__dirname, 'roblib-client-node.freebsd-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.freebsd-x64.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-freebsd-x64')
}
} catch (e) {
loadError = e
}
break
case 'linux':
switch (arch) {
case 'x64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'roblib-client-node.linux-x64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.linux-x64-musl.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-linux-x64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'roblib-client-node.linux-x64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.linux-x64-gnu.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-linux-x64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 'arm64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'roblib-client-node.linux-arm64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.linux-arm64-musl.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-linux-arm64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'roblib-client-node.linux-arm64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.linux-arm64-gnu.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-linux-arm64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 'arm':
localFileExisted = existsSync(
join(__dirname, 'roblib-client-node.linux-arm-gnueabihf.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./roblib-client-node.linux-arm-gnueabihf.node')
} else {
nativeBinding = require('@kareszklub/roblib-client-node-linux-arm-gnueabihf')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Linux: ${arch}`)
}
break
default:
throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
}

if (!nativeBinding) {
if (loadError) {
throw loadError
}
throw new Error(`Failed to load native binding`)
}

const { sum, sleepBlocking, sleep, throws, Robot, EventType, PinMode } = nativeBinding

module.exports.sum = sum
module.exports.sleepBlocking = sleepBlocking
module.exports.sleep = sleep
module.exports.throws = throws
module.exports.Robot = Robot
module.exports.EventType = EventType
module.exports.PinMode = PinMode
7 changes: 5 additions & 2 deletions node-ffi/npm/darwin-x64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
{
"name": "@kareszklub/roblib-client-node-darwin-x64",
"version": "0.0.0",
"version": "0.0.1",
"repository": {
"url": "https://github.com/kareszklub/roblib-rs"
},
"os": [
"darwin"
],
Expand All @@ -11,7 +14,7 @@
"files": [
"roblib-client-node.darwin-x64.node"
],
"license": "GPL-3.0",
"license": "LGPL-2.1-or-later",
"engines": {
"node": ">= 10"
}
Expand Down
7 changes: 5 additions & 2 deletions node-ffi/npm/linux-arm-gnueabihf/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
{
"name": "@kareszklub/roblib-client-node-linux-arm-gnueabihf",
"version": "0.0.0",
"version": "0.0.1",
"repository": {
"url": "https://github.com/kareszklub/roblib-rs"
},
"os": [
"linux"
],
Expand All @@ -11,7 +14,7 @@
"files": [
"roblib-client-node.linux-arm-gnueabihf.node"
],
"license": "GPL-3.0",
"license": "LGPL-2.1-or-later",
"engines": {
"node": ">= 10"
}
Expand Down
7 changes: 5 additions & 2 deletions node-ffi/npm/linux-arm64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
{
"name": "@kareszklub/roblib-client-node-linux-arm64-gnu",
"version": "0.0.0",
"version": "0.0.1",
"repository": {
"url": "https://github.com/kareszklub/roblib-rs"
},
"os": [
"linux"
],
Expand All @@ -11,7 +14,7 @@
"files": [
"roblib-client-node.linux-arm64-gnu.node"
],
"license": "GPL-3.0",
"license": "LGPL-2.1-or-later",
"engines": {
"node": ">= 10"
},
Expand Down
7 changes: 5 additions & 2 deletions node-ffi/npm/linux-x64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
{
"name": "@kareszklub/roblib-client-node-linux-x64-gnu",
"version": "0.0.0",
"version": "0.0.1",
"repository": {
"url": "https://github.com/kareszklub/roblib-rs"
},
"os": [
"linux"
],
Expand All @@ -11,7 +14,7 @@
"files": [
"roblib-client-node.linux-x64-gnu.node"
],
"license": "GPL-3.0",
"license": "LGPL-2.1-or-later",
"engines": {
"node": ">= 10"
},
Expand Down
Loading

1 comment on commit b1dca1b

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Artifacts

View all

base roland
aarch64-unknown-linux-gnu Download Download
aarch64-unknown-linux-musl Download Download
armv7-unknown-linux-gnueabihf Download Download
armv7-unknown-linux-musleabihf Download Download
x86_64-pc-windows-msvc Download Download
x86_64-unknown-linux-gnu Download Download
x86_64-unknown-linux-musl Download Download

Please sign in to comment.