Start auto-generating types

pull/2054/head
qucchia 2022-07-20 15:07:21 +02:00
parent 44da6b8f69
commit 805b5026da
11 changed files with 4039 additions and 833 deletions

View File

@ -7,10 +7,89 @@
"": {
"name": "Bangle.ts",
"version": "0.0.1",
"dependencies": {
"node-fetch": "^3.2.9"
},
"devDependencies": {
"typescript": "4.5.2"
}
},
"node_modules/data-uri-to-buffer": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
"integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==",
"engines": {
"node": ">= 12"
}
},
"node_modules/fetch-blob": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/jimmywarting"
},
{
"type": "paypal",
"url": "https://paypal.me/jimmywarting"
}
],
"dependencies": {
"node-domexception": "^1.0.0",
"web-streams-polyfill": "^3.0.3"
},
"engines": {
"node": "^12.20 || >= 14.13"
}
},
"node_modules/formdata-polyfill": {
"version": "4.0.10",
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
"dependencies": {
"fetch-blob": "^3.1.2"
},
"engines": {
"node": ">=12.20.0"
}
},
"node_modules/node-domexception": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/jimmywarting"
},
{
"type": "github",
"url": "https://paypal.me/jimmywarting"
}
],
"engines": {
"node": ">=10.5.0"
}
},
"node_modules/node-fetch": {
"version": "3.2.9",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.9.tgz",
"integrity": "sha512-/2lI+DBecVvVm9tDhjziTVjo2wmTsSxSk58saUYP0P/fRJ3xxtfMDY24+CKTkfm0Dlhyn3CSXNL0SoRiCZ8Rzg==",
"dependencies": {
"data-uri-to-buffer": "^4.0.0",
"fetch-blob": "^3.1.4",
"formdata-polyfill": "^4.0.10"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/node-fetch"
}
},
"node_modules/typescript": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz",
@ -23,14 +102,64 @@
"engines": {
"node": ">=4.2.0"
}
},
"node_modules/web-streams-polyfill": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
"integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==",
"engines": {
"node": ">= 8"
}
}
},
"dependencies": {
"data-uri-to-buffer": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
"integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA=="
},
"fetch-blob": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
"requires": {
"node-domexception": "^1.0.0",
"web-streams-polyfill": "^3.0.3"
}
},
"formdata-polyfill": {
"version": "4.0.10",
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
"requires": {
"fetch-blob": "^3.1.2"
}
},
"node-domexception": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="
},
"node-fetch": {
"version": "3.2.9",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.9.tgz",
"integrity": "sha512-/2lI+DBecVvVm9tDhjziTVjo2wmTsSxSk58saUYP0P/fRJ3xxtfMDY24+CKTkfm0Dlhyn3CSXNL0SoRiCZ8Rzg==",
"requires": {
"data-uri-to-buffer": "^4.0.0",
"fetch-blob": "^3.1.4",
"formdata-polyfill": "^4.0.10"
}
},
"typescript": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz",
"integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==",
"dev": true
},
"web-streams-polyfill": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
"integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q=="
}
}
}

View File

@ -9,5 +9,8 @@
"scripts": {
"build": "tsc",
"build:types": "tsc ./types/main.d.ts"
},
"dependencies": {
"node-fetch": "^3.2.9"
}
}

View File

@ -1,211 +0,0 @@
type Accel = {
x: number;
y: number;
z: number;
diff: number;
td: number;
mag: number;
};
type Mag = {
x: number;
y: number;
z: number;
dx: number;
dy: number;
dz: number;
heading: number;
};
type GPS = {
lat: number;
lon: number;
alt: number;
speed: number;
course: number;
time: Date;
stallites: number;
fix: number;
hdop: number;
};
type HealthStatus = {
movement: number;
steps: number;
bpm: number;
bpmConfidence: number;
};
type BangleOptions = {
wakeOnBTN1: boolean;
wakeOnBTN2: boolean;
wakeOnBTN3: boolean;
wakeOnFaceUp: boolean;
wakeOnTouch: boolean;
wakeOnTwist: boolean;
twistThreshold: number;
twistMaxY: number;
twistTimeout: number;
gestureStartThresh: number;
gestureEndThresh: number;
gestureInactiveCount: number;
gestureMinLength: number;
powerSave: boolean;
lockTimeout: number;
lcdPowerTimeout: number;
backlightTimeout: number;
hrmPollInterval: number;
};
type Optional<T> = {
[key in keyof T]?: T[key];
};
type LCDMode = "direct" | "doublebuffered" | "120x120" | "80x80";
declare const Bangle: {
accelRd: ((register: any, length: number) => number[]) &
((register: any) => number);
accelWr: (register: any, data: number[] | number) => void;
appRect: {
x: number;
y: number;
w: number;
h: number;
x2: number;
y2: number;
};
beep: (time?: number, frequency?: number) => Promise<void>;
buzz: (time?: number, strength?: number) => Promise<void>;
compassRd: ((register: any, length: number) => number[]) &
((register: any) => number);
compassWr: (register: any, data: number[] | number) => void;
dbg: () => any;
drawWidgets: () => void;
F_BEEPSET: boolean;
getAccel: () => Accel;
getCompass: () => Mag;
getGPSFix: () => GPS;
getHealthStatus: (range?: "current" | "last" | "day") => HealthStatus;
getLCDMode: () => LCDMode;
getLogo: () => string;
getOptions: () => BangleOptions;
getStepCount: () => number;
hrmRd: ((register: any, length: number) => number[]) &
((register: any) => number);
ioWr: (mask: Pin, isOn: boolean) => void;
isCharging: () => boolean;
isCompassOn: () => boolean;
isGPSOn: () => boolean;
isHRMOn: () => boolean;
isLCDOn: () => boolean;
isLocked: () => boolean;
lcdWr: (register: any, data: number[] | number) => void;
loadWidgets: () => void;
off: () => void;
on: ((event: "accel", listener: (xyz: Accel) => void) => void) &
((
event: "aiGesture",
listener: (
gesture: string | number | undefined,
weights: number[]
) => void
) => void) &
((event: "charging", listener: (charging: boolean) => void) => void) &
((
event: "drag",
listener: (event: {
x: number;
y: number;
dx: number;
dy: number;
b: number;
}) => void
) => void) &
((event: "faceUp", listener: (up: boolean) => void) => void) &
((event: "gesture", listener: (xyz: Int8Array) => void) => void) &
((event: "GPS", listener: (gps: GPS) => void) => void) &
((
event: "GPS-raw",
listener: (nmea: string, dataLoss: boolean) => void
) => void) &
((event: "health", listener: (info: HealthStatus) => void) => void) &
((
event: "HRM",
listener: (hrm: {
bpm: number;
confidence: number;
raw: Uint8Array;
}) => void
) => void) &
((
event: "HRM-raw",
listener: (hrm: {
raw: number;
filt: number;
bpm: number;
confidence: number;
}) => void
) => void) &
((event: "lcdPower", listener: (on: boolean) => void) => void) &
((event: "lock", listener: (on: boolean) => void) => void) &
((event: "mag", listener: (mag: Mag) => void) => void) &
((event: "midnight", listener: () => void) => void) &
((
event: "pressure",
listener: (info: {
temperature: number;
pressure: number;
altitude: number;
}) => void
) => void) &
((event: "step", listener: (up: number) => void) => void) &
((event: "swipe", listener: (direction: number) => void) => void) &
((
event: "tap",
listener: (data: {
dir: string;
double: boolean;
x: number;
y: number;
z: number;
}) => void
) => void) &
((
event: "touch",
listener: (button: number, xy: { x: number; y: number }) => void
) => void) &
((event: "twist", listener: () => void) => void);
project: (latlon: { lat: number; lon: number }) => { x: number; y: number };
resetCompass: () => void;
setCompassPower: (isOn: boolean, appID: string) => boolean;
setGPSPower: (isOn: boolean, appID: string) => boolean;
setHRMPower: (isOn: boolean, appID: string) => boolean;
setLCDBrightness: (brightness: number) => void;
setLCDMode: (mode?: LCDMode) => void;
setLCDOffset: (y: number) => void;
setLCDPower: (isOn: boolean, appID: string) => boolean;
setLCDTimeout: (timeout: number) => void;
setLocked: (isLocked: boolean) => void;
setOptions: (options: Optional<BangleOptions>) => void;
setPollInterval: (timeout: number) => void;
setStepCount: (timeout: number) => void;
setUI: (
type?:
| "updown"
| "leftright"
| "clock"
| "clockupdown"
| {
mode: "custom";
back?: () => void;
touch?: (n: number, e: number) => void;
swipe?: (dir: number) => void;
drag?: (e: number) => void;
btn?: (n: number) => void;
},
callback?: (direction: number) => void
) => void;
showLauncher: () => void;
softOff: () => void;
};

View File

@ -1,59 +0,0 @@
/*~ This file declares the Espruino utility class.
*~ Reference: https://banglejs.com/reference#E
*/
declare const E: {
showAlert: (() => Promise<undefined>) &
((message: string, title?: string) => Promise<number>);
showMenu: (() => undefined) &
((menu: {
// The "" value includes menu options.
""?: {
title?: string;
back?: () => void;
selected?: number;
fontHeight?: number;
x?: number;
y?: number;
x2?: number;
y2?: number;
cB?: number;
cF?: number;
cHB?: number;
cHF?: number;
predraw?: (gfx: GraphicsApi) => void;
preflip?: (gfx: GraphicsApi, less: boolean, more: boolean) => void;
} & {
// All the other key-value pairs are menu items.
[key: string]:
| undefined
| (() => void)
| {
value: boolean;
format?: (value: boolean) => string;
onchange?: (value: boolean) => void;
}
| {
value: number;
min?: number;
max?: number;
step?: number;
format?: (value: number) => string;
onchange?: (value: number) => void;
};
};
}) => {
draw: () => void;
move: () => void;
select: () => void;
});
showPrompt: (() => Promise<undefined>) &
(<T extends any = boolean>(
message: string,
options?: {
title?: string;
buttons?: { [key: string]: T };
img?: string;
}
) => Promise<T>);
};

View File

@ -1,216 +0,0 @@
/*~ This file declares the Espruino globals.
*~ Reference: https://banglejs.com/reference#_global
*/
/* Note: The following don't have to be declared as they are
* already part of regular JavaScript:
* btoa
* clearInterval
* clearTimeout
* decodeURIComponent
* encodeURIComponent
* eval
* Infinity
* isFinite
* isNaN
* NaN
* parseFloat
* parseInt
* setInterval
* setTimeout
*/
// Pins
declare type Pin = number;
declare type PinMode =
| "analog"
| "input"
| "intupt_pullup"
| "intupt_pulldown"
| "output"
| "opendrain"
| "af_output"
| "af_opendrain";
declare const BTN: 24;
declare const BTN1: 24;
declare const BTN2: 22;
declare const BTN3: 23;
declare const BTN4: 11;
declare const BTN5: 16;
declare const VIBRATE: 13;
declare function getPinMode(pin: Pin): PinMode;
declare function pinMode(
pin: Pin,
mode?: PinMode | "auto",
automatic?: boolean
): void;
// Analog pins
/**
* Get the analog value of the given pin.
* This is different to Arduino which only returns an integer between 0 and 1023.
* However only pins connected to an ADC will work (see the datasheet).
* **Note**: if you didn't call `pinMode` beforehand then this function will also reset pin's state to "analog".
* @param {number} pin - The pin to use.
* @returns {number} The analog Value of the Pin between 0 and 1.
* @url https://banglejs.com/reference#l__global_analogRead
*/
declare function analogRead(pin: Pin): number;
/**
* Set the analog Value of a pin. It will be output using PWM.
* **Note**: if you didn't call pinMode beforehand then this function will also reset pin's state to "output".
* @param {number} pin - The pin to use.
* @param {number} value - A value between 0 and 1.
* @param {object} [options] - Additonal options.
* @param {number} [options.freq] - Pulse frequency in Hz, e.g. 10 - specifying a frequency will force PWM output, even if the pin has a DAC.
* @param {boolean} [options.soft] - If true software PWM is used if hardware is not available.
* @param {boolean} [options.forceSoft] - If true software PWM is used even if hardware PWM or a DAC is available.
*/
declare function analogWrite(
pin: Pin,
value: number,
options?: { freq?: number; soft?: boolean; forceSoft?: boolean }
): void;
// Digital pins
declare const HIGH: 1;
declare const LOW: 0;
declare function digitalPulse(pin: Pin, value: boolean, time: number): void;
declare function digitalRead(pin: Pin | Pin[]): number;
declare function digitalWrite(pin: Pin, value: boolean): void;
declare function digitalWrite(pin: Pin[], value: number): void;
declare function digitalWrite(
pin: {
write: (value: boolean) => void;
},
value: boolean
): void;
// Other globals
declare function atob(base64Data: string): string;
declare function btoa(binaryData: string): string;
declare function changeInterval(id: number, time: number): void;
declare function dump(): void;
declare function echo(echoOn: boolean): void;
declare function edit(funcName: string | Function): void;
declare function getSerial(): number;
declare function getTime(): number;
declare const global: any; //TODO define better
declare const I2C1: I2C;
declare function load(file?: string): void;
declare function peek8(address: number, count?: 1): number;
declare function peek8(address: number, count: number): Uint8Array;
declare function peek16(address: number, count?: 1): number;
declare function peek16(address: number, count: number): Uint16Array;
declare function peek32(address: number, count?: 1): number;
declare function peek32(address: number, count: number): Uint32Array;
declare function poke8(address: number, value: number): void;
declare function poke16(address: number, value: number): void;
declare function poke32(address: number, value: number): void;
declare function print(...args: any[]): void;
declare const Serial1: Serial;
declare const Bluetooth: Serial;
declare const LoopbackA: Serial;
declare const LoopbackB: Serial;
declare function require(module: "heatshrink"): {
decompress: (compressedString: string) => string;
};
declare function require(module: "Storage"): Storage;
declare type Module = "heatshrink" | "Storage";
declare function reset(clearFlash?: true): void;
declare function setInterval(id: any): void;
declare function setBusyIndicator(pin?: Pin): void;
declare function setSleepIndicator(pin?: Pin): void;
declare function setTime(time: number): void;
type Data =
| number
| string
| Array<Data>
| ArrayBuffer
| { data: Data; count: number }
| { callback: () => Data };
declare function shiftOut(
pins: Pin | Pin[],
options: { clk: Pin; repeat?: number },
data: Data
): void;
declare const SPI1: SPIInstance;
declare const Terminal: Serial;
declare function trace(root?: number): void;
// Watches
declare function clearWatch(id?: number): void;
declare const setWatch: ((
callback:
| ((obj: { state: boolean; time: number; lastTime: number }) => void)
| string,
pin: number,
options?:
| boolean
| number
| {
repeat?: boolean;
edge?: "rising" | "falling" | "both";
debounce?: number;
irq?: boolean;
}
) => number) &
// If a data option is specified, the callback will also have one.
((
callback:
| ((obj: {
state: boolean;
time: number;
lastTime: number;
data: any; // TODO: Specify data type
}) => void)
| string,
pin: number,
options?: {
data: number;
repeat?: boolean;
edge?: "rising" | "falling" | "both";
debounce?: number;
irq?: boolean;
}
) => number);

View File

@ -1,266 +0,0 @@
/*~ This file declares the Graphics class.
*~ Reference: https://banglejs.com/reference#Graphics
*/
type Image = {
width: number;
height: number;
buffer: ArrayBuffer | string;
bpp?: number;
transparent?: number;
palette?: Uint16Array;
};
type Theme = {
fg: number;
bg: number;
fg2: number;
bg2: number;
fgH: number;
bgH: number;
dark: boolean;
};
type Layer = {
x: number;
y: number;
image: string | Image | ArrayBuffer;
scale?: number;
rotate?: number;
center?: boolean;
repeat?: boolean;
nobounds?: boolean;
};
type GraphicsApi = {
asBMP: () => string | undefined;
asImage: ((type: "object" | undefined) => object) &
((type: "string") => string);
asURL: () => string | undefined;
blit: (options: {
x1: number;
y1: number;
w: number;
h: number;
x2: number;
y2: number;
setModified?: boolean;
}) => GraphicsApi;
buffer: ArrayBuffer;
clear: (reset?: boolean) => GraphicsApi;
clearRect: ((x1: number, y1: number, x2: number, y2: number) => GraphicsApi) &
((options: {
x: number;
y: number;
x2: number;
y2: number;
}) => GraphicsApi) &
((options: { x: number; y: number; w: number; h: number }) => GraphicsApi);
createArrayBuffer: (
width: number,
height: number,
bpp: number,
options?: {
zigzag?: boolean;
vertical_byte?: boolean;
msb?: boolean;
interleavex?: boolean;
color_order?: "rgb" | "rbg" | "grb" | "gbr" | "brg" | "bgr";
}
) => GraphicsApi;
createCallback: (
width: number,
height: number,
bpp: number,
callback: ((x: number, y: number, colour: number) => void) & {
setPixel: (x: number, y: number, colour: number) => void;
fillRect: (
x1: number,
y1: number,
x2: number,
y2: number,
colour: number
) => void;
}
) => GraphicsApi;
createImage: (str: string) => Image;
drawCircle: (x: number, y: number, radius: number) => GraphicsApi;
drawCircleAA: (x: number, y: number, radius: number) => GraphicsApi;
drawEllipse: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
drawImage: (
image: string | Image | ArrayBuffer,
xOffset: number,
yOffset: number,
options?: {
rotate?: number;
scale?: number;
frame?: number;
}
) => GraphicsApi;
drawImages: (
layers: [Layer?, Layer?, Layer?],
options?: {
x: number;
y: number;
width: number;
height: number;
}
) => GraphicsApi;
drawLine: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
drawLineAA: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
// TODO: Somehow define that poly must have an even number of items
drawPoly: (poly: number[], closed?: boolean) => GraphicsApi;
drawPolyAA: (poly: number[], closed?: boolean) => GraphicsApi;
drawRect: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
drawString: (
str: string | number | boolean,
x: number,
y: number,
solid?: boolean
) => GraphicsApi;
dump: () => void;
fillCircle: (x: number, y: number, radius: number) => GraphicsApi;
fillEllipse: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
fillPoly: (poly: number[], closed?: boolean) => GraphicsApi;
fillPolyAA: (poly: number[], closed?: boolean) => GraphicsApi;
fillRect: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
flip: (all?: boolean) => GraphicsApi;
getBgColor: () => number;
getBPP: () => number;
getColor: () => number;
getFont: () => string;
getFontHeight: () => number;
getFonts: () => string[];
getHeight: () => number;
getInstance: () => GraphicsApi | undefined;
getModified: (
reset?: boolean
) => { x1: number; y1: number; x2: number; y2: number } | undefined;
getPixel: (x: number, y: number) => number;
getWidth: () => number;
imageMetrics: (image: string | GraphicsApi | Image | ArrayBuffer) =>
| {
width: number;
height: number;
bpp: number;
transparent: number;
}
| undefined;
lineTo: (x: number, y: number) => GraphicsApi;
moveTo: (x: number, y: number) => GraphicsApi;
quadraticBezier: (
vertices: [
x0: number,
y0: number,
x1: number,
y1: number,
x2: number,
y2: number
],
points?: number
) => number[];
reset: () => GraphicsApi;
scroll: (x: number, y: number) => GraphicsApi;
setBgColor: ((color: string) => GraphicsApi) &
((color: number) => GraphicsApi) &
((r: number, g: number, b: number) => GraphicsApi);
setClipRect: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
setColor: ((color: string) => GraphicsApi) &
((color: number) => GraphicsApi) &
((r: number, g: number, b: number) => GraphicsApi);
setFont: (name?: string, size?: number) => GraphicsApi;
setFontAlign: (
x: -1 | 0 | 1,
y: -1 | 0 | 1,
rotation?: 0 | 1 | 2 | 3
) => GraphicsApi;
setFontBitmap: () => GraphicsApi;
setFontCustom: (
bitmap: ArrayBuffer,
firstChar: number,
width: number | string,
height: number
) => GraphicsApi;
setFontVector: (size: number) => GraphicsApi;
setPixel: (
x: number,
y: number,
colour: number | string | undefined
) => GraphicsApi;
setRotation: (rotation: 0 | 1 | 2 | 3, reflect?: boolean) => GraphicsApi;
setTheme: (theme: Theme) => GraphicsApi;
stringMetrics: (str: string) => { width: number; height: number };
stringWidth: (str: string) => number;
theme: Theme;
toColor: ((color: string) => number) &
((color: number) => number) &
((r: number, g: number, b: number) => number);
transformVertices: (
verts: number[],
transformation:
| { x?: number; y?: number; scale?: number; rotate?: number }
| [number, number, number, number, number, number] // 2D transformation matrix
) => number[];
wrapString: (str: string, maxWidth: number) => string[];
};

View File

@ -1,7 +0,0 @@
/*~ This file declares the I2c class.
*~ Reference: https://banglejs.com/reference#I2C
*/
declare class I2C {
constructor();
}

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
declare type Serial = {};

View File

@ -1,24 +0,0 @@
declare type SPI = {
find(pin: Pin): SPIInstance | undefined;
new (): SPIInstance;
};
type TOrArray<T> = T | TOrArray<T>[];
type TArrObj<T> = T | TArrObj<T>[] | { data: TArrObj<T>; count: number };
type NumStrArr = TOrArray<number | string>;
declare type SPIInstance = {
send(data: TArrObj<number | string>, nss_pin: number): any;
send4bit(data: NumStrArr, bit0: number, bit1: number, nss_pin: number): void;
send8bit(data: NumStrArr, bit0: number, bit1: number, nss_pin: number): void;
setup(options: {
sck?: Pin;
miso?: Pin;
mosi?: Pin;
baud?: number;
mode?: 0 | 1 | 2 | 3;
order?: "msb" | "lsb";
bits?: number;
}): void;
write(...data: Array<Data | Pin>): void;
};

View File

@ -1,29 +0,0 @@
type FileData = string | Array<any> | Object;
declare interface Storage {
compact: () => void;
erase: (name: string) => void;
eraseAll: () => void;
getFree: () => number;
hash: (regex?: RegExp) => number; // More specifically it returns Uint32
list: (regex?: RegExp, filter?: { sf: boolean }) => string[];
open: (name: string, mode: "r" | "w" | "a") => StorageFile;
read: (name: string, offset?: number, length?: number) => string | undefined;
readArrayBuffer: (name: string) => ArrayBuffer | undefined;
readJSON: (name: string, noExceptions?: boolean) => any;
write: (
name: string,
data: FileData,
offset?: number,
size?: number
) => boolean;
writeJSON: (name: string, data: any) => boolean;
}
declare interface StorageFile {
erase: () => void;
getLength: () => number;
read: (len: number) => string | undefined;
readLine: () => string | undefined;
write: (data: FileData) => string;
}